对于我想在J2EE容器中运行的后台作业,我找到了创建启动servlet并使用Timer Service API创建托管Timer的建议(在 J2EE中定时批处理的工具是什么?。) p>

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

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

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

有帮助吗?

解决方案

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

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

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top