package bo.gotthardt.schedule.quartz; import org.glassfish.hk2.api.ServiceLocator; import org.quartz.Job; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.spi.JobFactory; import org.quartz.spi.TriggerFiredBundle; import javax.inject.Inject; /** * A Quartz JobFactory that uses HK2 dependency injection to create Job instances. */ public class HK2JobFactory implements JobFactory { private final ServiceLocator locator; @Inject public HK2JobFactory(ServiceLocator locator) { this.locator = locator; } @Override public Job newJob(TriggerFiredBundle triggerFiredBundle, Scheduler scheduler) throws SchedulerException { JobDetail jobDetail = triggerFiredBundle.getJobDetail(); Class<? extends Job> jobClass = jobDetail.getJobClass(); return locator.getService(jobClass); } }