You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.
Some job schedules are static and can just be scheduled at start up time. Here is a simple way to do this.
@Name("myJobScheduler")
@Scope(ScopeType.APPLICATION)
@AutoCreate
@Startup
public class MyJobScheduler {
@Logger
private Log log;
private String cron = "0/1 * * * * ?";
private QuartzTriggerHandle handle;
public void setCron(String cron) {
this.cron = cron;
}
@Create
public void schedule() throws Exception {
handle = MyJob.instance().execute(cron);
log.debug("Scheduled Job: #0 with: #1", handle.getTrigger().getName(),
cron);
}
@Destroy
public void unschedule() throws Exception {
log.debug("Unscheduling Job: #0", handle.getTrigger().getName());
handle.cancel();
}
@Name("myJob")
@Scope(ScopeType.EVENT)
@AutoCreate
public static class MyJob {
@Logger
private Log log;
@Asynchronous
@Transactional
public QuartzTriggerHandle execute(@IntervalCron String cron) {
log.info("Doing somthing...");
return null;
}
public static Job instance() {
return (Job) Component.getInstance(MyJob.class);
}
}
}