2009-12-01 30 views
1

我希望能夠:如何在EJB3中使用Quartz?

  • 定義不同的作業和觸發器。
  • 修改對需求的過期日期和時間間隔
  • 暫停或取消執行(觸發)

作業將EJB或調用EJB和我想從網站管理一切(用戶將必須定義執行)

所以我看了timerservice,timerobjects,timer和timerhandle。但我認爲它不能滿足我所有的需求

另一方面,石英可以讓我做任何我想做的事情,但是我並沒有絲毫思考如何將這些集成到我的jboss中。 我讀過石英使用自己的線程池,我不知道如何處理所有這些。

我使用JBoss Seam的在我的項目,但縫/石英整合是非常有限的(或文檔),而不是100%安全(上看到他們的論壇:'run forever' tasks end after only a few weeks

如果有人設法整合在他的應用程序服務器(jboss是一個優點)中有很好的調度程序,可以給我指示,建議,甚至代碼片斷,我會很高興。

在此先感謝。

回答

1

好吧,我很抱歉,我在JBoss Seam的來源發現正是我需要的: QuartzDispatcher創建QuartzTriggerHandle至極火災縫事件在指定的時間和日期是手動可暫停,可恢復和停止的。我在我想執行的方法上使用@observer。

這很簡單,它的工作到目前爲止。

1

我有一些將Quartz整合到Weblogic(沒有jboss的經驗,抱歉)應用服務器的經驗。 Quartz有一個內置的監聽器class,它將在服務器啓動時自動配置Quartz調度器(根據J2EE規範)調用。然後在另一個啓動課程中,您可以檢索該調度程序,添加作業並開始提供這些作業。

你通常不需要擔心線程池,Quartz可以處理所有這一切,如果你也想。它在啓動時從屬性文件中獲取信息,您可以定義或使用Quartz自帶的默認信息。我一直在使用默認,因爲它適用於我的目的。

至於定義工作,你創建你的工作類,並從那裏調用你的ejbs。這非常簡單。

爲了您的閱讀快感:

All Quartz documentation

Quartz JavaDoc

Cookbook containing lots of code snippets

希望這是足以讓你開始!

1

好消息! JBoss已經有了一個內置的調度器。

由於EJB 2.0規範包括按計劃的時間間隔運行無狀態會話Bean和MDB,因此所有應用程序服務器都已經包含此功能一段時間了。

這裏是配置的JBoss使用其內置的調度來運行一個類的一個示例:

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

約JBoss的執行最好的部分是,它是基於該MBean說明書中,這意味着您可以在運行時創建/更新/刪除計劃任務。