Java EE中的定时批处理有哪些工具?

时间:2008-09-16 23:03:27

标签: tomcat java-ee process timer websphere

我的雇主刚要求我在他们运行的Java EE WebSphere应用程序中运行定时批处理。它应该在每天晚上11:30开始上课。

我不熟悉Java EE或WebSphere服务器(或tomcat,在开发环境中),我一直在挖掘,但我发现的只是关于java计时器类而不是如何设置它或者调用它。

似乎也需要编辑web.xml文件。

任何帮助将不胜感激!

7 个答案:

答案 0 :(得分:5)

您应该查看OpenSymphony中的开源Quartz library。非常容易使用,非常适合这种事情。

TimerTasks最适合将来在短时间内运行。但是对于像这样的大型时间框架的重复执行,Quartz擅长。您甚至可以将即将到来的任务列表保存在持久存储中,例如文件或数据库,这样,如果重新启动应用程序,即将到来的定时作业也不会丢失。

此外,在Spring框架中对Quartz有一个很棒的抽象。

答案 1 :(得分:2)

在WebSphere中,您可以使用Scheduler Service来触发java类中方法的执行。 调度程序提供了一个用于安排作业执行的日历(类似于cron),或者您可以开发自己的日历。

以下是WAS 6.1文档中描述调度程序页面的链接:

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp

答案 2 :(得分:1)

EJB 3.1将改进计时器服务,以及应用程序生命周期钩子,无需用户交互就无需使用servlet来启动任务。

这可能会回答问题标题,但对于在websphere上运行的遗留应用程序(超过6个月前编写;))的“真实”问题,我建议使用启动servlet和EJB计时器服务。

Timer Service in J2EE 1.4 (EJB 2.1)

对于EJB 3.0(和尽快提供3.1),有一些很好的注释;)

除非你真的需要,否则我不会介绍另一个library。计时器服务应该足以每天执行任意作业。

HTH,
马丁

答案 3 :(得分:0)

在您的web.xml中,您可以配置要在启动时加载的servlet 语法:

< servlet servlet-name ='hello'          servlet的类= 'test.HelloWorld' >
  <负载上的启动/>
< / servlet的>

执行此操作,然后在servlet的init方法中,您可以设置Timer / TimerTask来执行您需要执行的任何操作。 TimerTasks就像Threads,除了你可以安排它们何时运行。

答案 4 :(得分:0)

Quartz是标准JBoss 4.2.x发行版的一部分。

这是一个非常好的图书馆,没有太多工作,你也可以定义简单的工作流程。

答案 5 :(得分:0)

WebSphere中没有对调度的支持。

如果您使用的是unix,则可以使用crontab为websphere应用程序的页面安排请求。我想在Windows上也可以安排对页面的请求。在我的crontab中,我每天8:45在网页上安排一个请求

45 8 * * *获取http://www.domain.com/myBatch?securitykey=verysecret

现在每天早上都会调用myBatch servlet,那时我可以做任何需要做的事情。为了避免其他人调用此页面并启动批处理,我添加了securitykey参数。

答案 6 :(得分:0)