Die Suche nach "Quartz Hibernate" ergab dies. Ich kam zu einer anderen Lösung (und benutzte Tapestry) und dachte, ich würde es teilen.
wenn die Planung der Arbeit:
…
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDataMap myJobDataMap = new JobDataMap();
myJobDataMap.put("HibernateSessionManager", hibernateSessionManager);
myJobDataMap.put("PerthreadManager", perThreadManager);
JobDetail job = JobBuilder.newJob(SomeJob.class).withIdentity(
"SomeJob", "someGroup").setJobData(
myJobDataMap).build();
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(
"Some Trigger", "someGroup").startNow().withSchedule(
SimpleScheduleBuilder.repeatSecondlyForever(30)).build();
scheduler.scheduleJob(job, trigger);
scheduler.start();
…
und im Job
public void execute(JobExecutionContext context)
throws JobExecutionException
{
JobDataMap jdm = context.getMergedJobDataMap();
HibernateSessionManager hibernateSessionManager = (HibernateSessionManager) jdm.get("HibernateSessionManager");
PerthreadManager perThreadManager = (PerthreadManager) jdm.get("PerthreadManager");
Session session = hibernateSessionManager.getSession();
//do stuff with session …
//now clean up, otherwise I ended up with <IDLE> in transactions
perThreadManager.cleanUp();
}
Hoffnung jemand kann diese verwenden.
Meine Quarz-Job-Klasse soll FTP auf einige Remote-Server übertragen und eine große Sammlung (Millionen) von XML-Dateien auf sie hochladen. Ist das die richtige Methode für dieses Szenario? – Joe
Mein Code erzeugt viele Fehler beim Ausführen des Ruhezustands von einem Quarzjob. Wenn ich es von außerhalb des Quarzes laufe, funktioniert es korrekt und macht alle DB Operationen. Was ich ändern muss, damit es mit Quarz funktioniert. – Joe
Welche Art von Fehlern? –