package net.ftlines.blog.cdidemo.service; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.event.Event; import javax.enterprise.event.Observes; import javax.inject.Inject; import net.ftlines.blog.cdidemo.cdi.ApplicationStartedEvent; public class SystemReportScheduler { @Inject Event<GenerateSystemReportEvent> event; void start(@Observes ApplicationStartedEvent ase) { Thread timer = new Thread() { public void run() { try { while (true) { Thread.sleep(5000); event.fire(new GenerateSystemReportEvent()); } } catch (InterruptedException e) { return; } } }; timer.setDaemon(true); timer.start(); } }