Java EE 计划任务

6
我需要在Weblogic 10.3服务器上定期运行任务(例如每6小时或每天中午12点) 。该任务基本上从数据库中检索一些数据并对其进行业务逻辑处理。
最佳的实现方式是什么?我已经在互联网上搜索到了一些解决方案,例如:
使用计时器服务。 工作管理器。 EJB计时器。
顺便说一下,我还在学习JavaEE,所以这可能是一个基础问题或者我遗漏了一些内容。
3个回答

4
在JavaEE容器下运行时,应避免使用JDK的标准Timer功能。而应该使用EJB定时器,优先考虑使用它们而不是任何专有解决方案(我认为Work Managers是WebLogic的专有解决方案)。
从这里开始:http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html

+1 感谢您的回答。顺便说一下,我正在使用运行JAVA EE 5的Weblogic 10.3.0。通过Eclipse创建EJB定时器需要EJB 3.1,而Weblogic 10.3.0不支持该版本。 - Eng.Fouad
嗯嗯。EJB计时器是在EJB 3.0中引入的,而WebLogic 10.3支持该版本。你从哪里得知Eclipse需要EJB 3.1才能创建计时器? - Isaac
需要包含 javax.ejb.Schedule 注释。 - Eng.Fouad
javax.ejb.TimerService 怎么样? - Isaac
如何使用 javax.ejb.TimerService 配置间隔时间? - Eng.Fouad
这个链接似乎包含一些有用的例子:http://www.java2s.com/Code/Java/EJB3/UseTimerService.htm - Isaac

1
考虑使用 javax.ejb.Schedule 注释。

1
我应该在EJB中使用它吗?如果是,我应该将其部署为会话Bean还是实体Bean? - Eng.Fouad
顺便提一下,我正在使用仅支持EJB 3.0的Webogic 10.3。javax.ejb.Schedule是自EJB 3.1引入的。 - Eng.Fouad
关于使用 - 最好找一些例子,这方面有很多。关于EJB3.0,请考虑将应用服务器更改为EJB 3.1兼容版本,如果您的情况允许的话。 EJB 3.1有很多好东西,计划是其中之一的例子。 - Evgeniy Dorofeev

0
Timer timer = new Timer();
timer.schedule(new MyTask(), 1000, 2000);

3
这是一段普通的Java代码!如何在Weblogic上部署它? - Eng.Fouad
2
Weblogic也是纯Java的。但在JavaEE环境中,您不应该使用Timer或任何其他手动线程技术,而应该使用服务器的功能。在JEE6中,EJB调度服务可以替换java util timer。 - Gimby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接