0

对于我想在 J2EE 容器中运行的后台作业,我发现了创建启动 servlet 并使用 Timer Service API 创建托管计时器的建议(在 J2EE 中用于定时批处理的哪些工具的答案中? )。

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

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

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

4

2 回答 2

2

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

Java EE 5 容器有一个 TimerService,它是一个 EJB。也许会帮助您解决问题。

于 2009-06-21T15:07:51.263 回答
1

而不是使用 Servlet 启动代码(将在每次重新部署后执行),我发现在 EJB 启动时启动计时器更简洁。使用 EJB 3.1 和 Singleton EJB,现在可以用更少的代码实现这一点:

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

于 2010-03-24T20:03:56.140 回答