Java 基于集群的JBoss任务调度

Java 基于集群的JBoss任务调度,java,jboss,ejb-3.0,scheduling,Java,Jboss,Ejb 3.0,Scheduling,我需要能够为运行在JBoss4.2上的EJB应用程序运行一些预定任务(报告) 在我的初始实现中,我在关联的WAR中使用servlet从属性文件读取一些配置,然后使用计时器服务API重置计划任务。这是可行的,但在web项目中关闭初始化似乎有点尴尬。此外,我不确定当应用程序部署在集群环境中时,这是否会像预期的那样起作用 完成这类任务的最佳实践是什么?我应该使用计时器服务以外的其他服务吗?有没有更好的方法在服务器启动时初始化计时器 也许可以看看。引用其网站: Quartz是一个功能齐全的开源作业调度系

我需要能够为运行在JBoss4.2上的EJB应用程序运行一些预定任务(报告)

在我的初始实现中,我在关联的WAR中使用servlet从属性文件读取一些配置,然后使用计时器服务API重置计划任务。这是可行的,但在web项目中关闭初始化似乎有点尴尬。此外,我不确定当应用程序部署在集群环境中时,这是否会像预期的那样起作用

完成这类任务的最佳实践是什么?我应该使用计时器服务以外的其他服务吗?有没有更好的方法在服务器启动时初始化计时器

也许可以看看。引用其网站:

Quartz是一个功能齐全的开源作业调度系统,可以与任何J2EE或J2SE应用程序集成,或与之一起使用,从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的计划,以执行数十个、数百个甚至数万个作业;任务定义为标准Java组件或EJB的作业。Quartz调度器包括许多企业级功能,如JTA事务和集群

我在过去使用过它来触发EJB作业,整个解决方案工作得很好,具有很好的可伸缩性。要在EJB中使用它,您需要使用存储调度信息(作业、触发器和日历)。要优化作业执行的资源,请查看文档。然后,如果EJB部署在集群上,只需让EJB客户机在不同实例上执行负载平衡请求

如果需要,Quartz本身还可以通过故障转移和负载平衡来获得高可用性和可扩展性


关于您提到的属性文件,我不确定您需要准确读取哪种类型的数据,但如果没有servlet,如果您需要读取某些内容,则必须从数据库中读取。

Quartz是一个很好的解决方案,除非您的集群处于高可用性场景:“永远不要在单独的机器上运行群集,除非它们的时钟是使用某种形式的时间同步服务(守护进程)进行同步的,这种服务运行得非常定期(时钟之间的间隔必须在一秒钟之内)。”我在一个具有高可用性的JBoss场景中提出了一个类似的问题: