QuartzTrigger Methode getNextFireTime() liefert immer null

navino

Aktives Mitglied
Hallo zusammen,

ich habe eine Webanwendung mit Spring in der einige CronTrigger drin sind.
Ich möchte für den Anwender anzeigen, wann der letzte job gelaufen ist, und wann der nächste anläuft.

Ich komme aber irgendwie nicht an die Informationen dran.

Ich habe folgendes:

WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(httpRequest.getSession().getServletContext());

CronTriggerBean trigger1 = (CronTriggerBean)wac.getBean("syncTrigger");
System.out.println("letzer Start " + trigger1.getPreviousFireTime());
System.out.println("trigger " + trigger1.getNextFireTime());
System.out.println("Starttime " + trigger1.getStartTime());

Die Augabe lautet immer, egal wann ich das ausführe:
letzer Start null
trigger Mon Dec 13 14:40:00 CET 2010
Starttime Mon Dec 13 14:39:59 CET 2010

Im Spring habe ich folgendes:


<bean id="quartzJobSyncStatusDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="quartzUseCases" />
<property name="targetMethod" value="executeSyncStatus" />
<property name="concurrent" value="false" />
</bean>

<bean id="quartzSyncTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="quartzJobSyncStatusDetail" />
<property name="cronExpression">
<value>${sync.cron.expressions}</value>
</property>
</bean>

<bean id="schedulerTriggers" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="quartzSyncTrigger" />

</list>
</property>
</bean>

Der job läuft auch jede Minute.... aber die Ausgabe ändert sich nicht!

Hat jemand eine Ahnung, was ich da falsch mache?

Gruß
navino
 

navino

Aktives Mitglied
Hallo,

ich habe die Ursache gefunden, und zwar muss ich über die SchedulerFactory gehen:

public static List<QuartzJob> showJobs(HttpServletRequest request){
List<QuartzJob> quartzJobs = new ArrayList<QuartzJob>();
WebApplicationContext wac =
WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
StdScheduler scheduler = (StdScheduler)wac.getBean("schedulerFactory");
try{
for(String groupName : scheduler.getJobGroupNames()) {
for(String jobName : scheduler.getJobNames(groupName)) {
Trigger[] triggers = scheduler.getTriggersOfJob(jobName, groupName);

for (int i = 0; i < triggers.length; i++) {
Date nextFireTime = triggers.getNextFireTime();
Date previousFireTime = triggers.getPreviousFireTime();
// System.out.println("JobName: " + jobName + " PreviousFireTime " + previousFireTime + " NextFireTime: " + nextFireTime + " GroupName: " + groupName);
QuartzJob job = new QuartzJob();
job.setJobName(jobName);
job.setLastJobDate(previousFireTime);
job.setNextJobDate(nextFireTime);
quartzJobs.add(job);

}
}
}
}catch(Exception e){
//do something....
}
return quartzJobs;
}

Das habe ich so bei google gefunden.

Gruß
navino
 

Ähnliche Java Themen

Neue Themen


Oben