如何在Servlet启动代码中使用J2EE Timer Service API?

时间:2009-06-21 14:52:01

标签: servlets java-ee timer startup

对于我想在J2EE容器中运行的后台作业,我发现了创建启动servlet并使用Timer Service API创建托管Timer的建议(在What tools are there for timed batch processes in J2EE?的答案中)。

要创建计时器,我需要一个实现计时器API的上下文。 (Example

在Servlet类中,我覆盖了init方法,但它只能访问ServletContext,但不能访问SessionContext。 ServletContext没有创建计时器的方法,所以我被困在这里。

如何在servlet的启动代码中访问J2EE计时器服务?

2 个答案:

答案 0 :(得分:2)

每当我听到计时器工作时,我都不禁认为这应该与Java EE应用服务器分开。您可以使用Quartz或操作系统计划任务或AutoSys之类的批处理管理器,但将其嵌入到servlet中似乎是对我的servlet滥用。

Java EE 5容器的TimerService是EJB。也许this会帮助您解决问题。

答案 1 :(得分:1)

我没有使用Servlet启动代码(将在每次重新部署后执行),而是发现在启动EJB时启动计时器更加清晰。使用EJB 3.1和Singleton EJB,现在可以使用更少的代码:

http://blogs.oracle.com/kensaks/entry/application_startup_shutdown_callbacks