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

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

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

任何帮助将不胜感激!

有帮助吗?

解决方案

你应该看看开源的 石英库 来自 OpenSymphony。非常容易使用,非常适合这种事情。

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

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

其他提示

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

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

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

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

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

J2EE 1.4 (EJB 2.1) 中的计时器服务

对于 EJB 3.0(以及即将推出的 3.1),有一些很好的注释;)

我不会介绍另一个 图书馆 除非你真的需要它。计时器服务应该足以每天执行任意工作。

哈特哈,
马丁

在 web.xml 中,您可以配置一个 servlet 在启动时加载。
句法:

u003Cservlet servlet-name='hello'n servlet-class='test.HelloWorld'>
<启动时加载/>
</servlet>

执行此操作,然后在 servlet 的 init 方法中,您可以设置一个 Timer / TimerTask 来执行您需要执行的任何操作。TimerTasks 类似于线程,只不过您可以安排它们何时运行。

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

这是一个非常好的库,无需太多工作,您也可以定义简单的工作流程。

WebSphere 中不支持调度。

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

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

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

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