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

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

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

任何帮助将不胜感激!

===============>>#1 票数:5 已采纳

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

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

此外,Spring框架中有一个奇妙的Quartz抽象。

===============>>#2 票数:2

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

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

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

===============>>#3 票数:1

EJB 3.1将具有改进的计时器服务,以及应用程序生命周期钩子,无需用户交互即可消除使用servlet启动任务的需要。

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

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

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

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

HTH,
马丁

===============>>#4 票数:0

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

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

这样做,然后在servlet的init方法中,你可以设置一个Timer / TimerTask来做你需要做的事情。 TimerTasks就像Threads,除了你可以安排它们何时运行。

===============>>#5 票数:0

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

并且是一个非常好的库,没有太多工作,您还可以定义简单的工作流程。

===============>>#6 票数:0

WebSphere中不支持调度。

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

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

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

  ask by community wiki translate from so

未解决问题?本站智能推荐:

1回复

如何确定Java EE应用程序需要哪些执行权限?

我使用一组库创建了一个Java EE应用程序。 奇迹般有效。 现在需要将其部署到生产中。 我们的管理员对执行安全性非常谨慎,需要显式授予的权限。 遍历所有代码并查找安全性需求(尤​​其是自定义库)非常耗时,我可能会错过一切。 在Tomcat或Websphere中是否有一种方法可以运
1回复

将Web项目从Webshpere 7.0迁移到Eclipse Java EE IDE / Tomcat 8.0

我必须将Web项目从Websphere迁移到个人安装:Eclipse Java EE IDE / Tomcat 8.0。 我在几个网站上找到了一些步骤,但是没有任何办法可以解决我的问题。 更明确地说,其中一些芭蕾舞短裙与其他短裙完全相反。 因此,我的服务器TOMCAT运行正常,我可
2回复

没有单独的J2EE容器部署,是否可以虚拟化war文件的执行?

假设我要允许我的开发人员将其war文件上传到在我们的Intranet上运行的Web应用程序( 而不是应用程序服务器本身 ) ,然后该Web应用程序将运行这些Wars ,就像它们是单独部署在J2EE容器中的单独应用程序一样 。 换句话说,我们实际上并没有将wars作为单独的应用程序部署在容器
3回复

对于web.xml中的servlet定义, false 的含义是什么?

似乎servlet的web.xml有一个名为的元素 这可以放在servelt定义中 是否启用了servlet处理请求的能力? 我注意到即使我将enabled设置为false,也会调用servelt的init方法。 通过servlet spec pdf搜索没有提供<ena
1回复

如何通过Java程序在Windows中检查Tomcat服务是否正在运行或停止? [重复]

可能重复: 如何检查服务是否通过批处理文件运行并启动(如果未运行)? 使用命令提示符确定Tomcat是否在Windows中运行 有没有一种方法可以通过Windows调度程序运行的Java程序检查Tomcat服务(或与此有关的任何服务)是否在Windows操作系统中运行/停止?
1回复

自动定时器@Schedule Java EE

我是Java EE的新用户,我正在开发一个必须定期更新天气的应用程序。 我使用注释创建了一个自动计时器,以便每5分钟更新一次。 我想改变时间(管理员可以改变它): 我需要一个名为frequency的整数变量,它包含天气更新的频率。 我试着这样做,但这没效果: 你知道任何解决
2回复

Java EE调试和监视工具中的最新技术

我多年来一直在探索Java EE。 我正在寻找有关Java EE调试和监视工具的建议。 我想找到一个工具,可以让我的动态探索线程空间等。 我主要在使用Tomcat。 update :和Java 5。
1回复

如何在JSP(在Java EE应用程序中)中使用SSL?

我正在使用Java EE和JSP创建一个Web应用程序。 我正在使用Tomcat和WebSphere Application Server作为服务器应用程序。 我想在SSL中实现我的Web应用程序,因此它显示https://并具有安全站点图标。 如何在tomcat和WAS上创建具有
2回复

Java EE应用程序范围的变量在集群环境(Websphere)中?

在Java EE应用程序(在Websphere上运行)中是否有任何简单的方法可以在整个集群中的应用程序范围内共享对象? 某些东西可能类似于Servlet Context参数,但它在整个集群中共享。 例如,在服务器“A”和“B”的集群中,如果在服务器A上设置了值(key = value),
1回复

如何首先加载位于Java EE app libs中的类,而不是Java EE App Container提供的类

我们将在开发中使用WebSphere 8.0 app服务器。 我们的Web应用程序使用Amazon aws java sdk,它依次使用Apache http-client 4.1。 但是WebSphere的库中也有http-client类,它们似乎与我们的web-app中的http-c