如何在EJB3中使用Quartz?

时间:2009-12-01 14:46:14

标签: java java-ee ejb-3.0 seam scheduling

我希望能够:

  • 定义不同的工作和触发器。
  • 按需修改到期日期和时间间隔
  • 暂停或取消执行(触发器)

工作将是ejbs或调用ejbs,我想管理网站上的所有内容(用户必须定义​​执行)

所以我看了一下timerservice,timerobjects,timer和timerhandle。但我认为它无法满足我的所有需求

另一方面,Quartz允许我做我想要的所有事情,但我对如何将它集成到我的jboss中没有丝毫的线索。 我读到石英使用自己的线程池,我不知道如何处理这一切。

我在我的项目中使用Jboss Seam,但是缝/石英集成非常有限(或文档是)并且不是100%安全(在他们的论坛上看到:'run forever' tasks end after only a few weeks

如果有人设法将一个好的调度程序集成到他的应用程序服务器中(jboss是一个加号)并且可以给我指示,建议甚至代码片段,我会很激动。

提前致谢。

4 个答案:

答案 0 :(得分:1)

我有一些将Quartz集成到Weblogic(没有jboss体验,对不起)应用服务器的经验。 Quartz有一个内置的监听器class,它将在服务器启动时调用(根据J2EE规范),自动配置Quartz调度程序。然后在另一个启动类中,您可以检索该调度程序,添加作业并开始提供这些作业。

您通常不需要担心线程池,如果您也需要,Quartz可以自行处理所有这些问题。它从启动时的属性文件中获取其信息,您可以定义或使用石英附带的默认文件。我一直在使用默认值,因为它适用于我的目的。

就定义工作而言,您可以创建工作类并从那里调用您的ejbs。这很简单。

为了您的阅读乐趣:

All Quartz documentation

Quartz JavaDoc

Cookbook containing lots of code snippets

希望这足以让你开始!

答案 1 :(得分:1)

好消息! JBoss已经有了内置的调度程序。

由于EJB 2.0规范包括按计划的时间间隔运行无状态会话bean和MDB,因此所有应用程序服务器都已包含此功能一段时间了。

以下是配置JBoss使用其内置调度程序运行类的示例:

http://www.jboss.org/community/wiki/Scheduler

关于JBoss实现的最好的部分是它基于MBean规范,这意味着您可以在运行时创建/更新/删除计划任务。

答案 2 :(得分:1)

好的,对不起,我在Jboss Seam的消息来源找到了我需要的东西: QuartzDispatcher创建QuartzTriggerHandle在指定的时间和日期触发煤层事件,并且可以手动调用,恢复和停止。我在我想要执行的方法上使用@observer。

这很简单,到目前为止一直有效。

答案 3 :(得分:0)

正如Poindexter指出的那样,Quartz documentation有很好的起点:Tutorial for Developing with QuartzExamples of UsageCook Book (Quick How-Tos in the form of code examples)等。

What Is Quartz文章也非常好(即使现在有点老了。)

要与JBoss集成,可以查看JBoss Wiki上的How to configure a Quartz service