我如何使用Servlet的启动代码的J2EE定时服务API?(How can I use the J

2019-10-31 15:24发布

为此,我想在J2EE容器中运行的后台作业,我发现建议创建一个启动servlet和使用定时服务的API来创建一个托管定时器(在答案的工具有在J2EE定时批量处理什么? )。

要创建一个定时器,我需要它实现了定时器API的上下文。 ( 实施例 )

在Servlet类,我覆盖了init方法,但它只有一个ServletContext的访问,而不是一个SessionContext。 一个ServletContext没有方法来创建计时器,所以我在这里停留。

我如何可以访问J2EE定时器服务在Servlet的启动代码?

Answer 1:

每当我听到计时器作业,我不禁想,这应该从一个Java EE应用服务器中分离出来。 您可以使用类似石英,或操作系统计划任务,或分批经理像AutoSys,但将其嵌入一个servlet看起来的servlet的滥用给我。

Java EE 5个的容器有一个TimerService这是一个EJB。 也许这将帮助你解决它。



Answer 2:

而不是使用Servlet的启动代码(这将在每次重新部署后执行)的,我发现它吸尘器在EJB的启动启动定时器。 随着EJB 3.1和EJB辛格尔顿这个现在可以用少得多的代码:

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



文章来源: How can I use the J2EE Timer Service API in the Servlet startup code?