程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 在J2EE環境中使用Quartz企業級計劃調度器(2)

在J2EE環境中使用Quartz企業級計劃調度器(2)

編輯:關於JAVA

3 自動啟動Servlets

我們希望在應用被部署或容器啟動時就提交任務。我們必須在web模塊並重啟動的時候 初始化QuartzInitializerServlet 和 howto.quartz.servlet.QuartzServlet。為了達到 這個目的,我們需要在Web應用的部署描述符(web.xml)中增加以下內容:

<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<display-name>Quartz Initializer Servlet</display-name>
<servlet- class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet- class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>QuartzServlet</servlet-name>
<display-name>Quartz Servlet</display-name>
<servlet-class>howto.quartz.servlet.QuartzServlet</servlet- class>
<init-param><param-name>cronExpr</param-name> <param- value>0 0/30 * * * ?</param-value></init-param>
<load-on-startup>2</load-on-startup>
</servlet>

Servlet 需要訪問能TestEJB,因此我們需要在web.xml中創建ejb-ref ,如下所示:

<ejb-ref>
<ejb-ref-name>ejb/TestEJB</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>howto.quartz.ejb.TestEJBHome</home>
<remote>howto.quartz.ejb.TestEJB</remote>
</ejb-ref>

4 組裝/打包應用

Web模塊需要訪問Quartz API,因此我們必須將Quartz 類庫打包到WAR模塊中。我們需 要將quartz.jar, commons-logging.jar, commons-pool-1.1.jar等放在WAR模塊的WEB- INF/lib目錄下。你的環境中需要的quartz 配置必須在quartz.properties文件中聲明, 該文件必須放在WAR模塊的WEB-INF/classes 目錄下。

包括了TestEJB的ejb-jar和包括了Quartz類庫和QuartzServlet的WAR需要打包為EAR並 部署到J2EE容器中,在我們的例子中使用的是OC4J。

5 配置你的服務器打開用戶線程功能

配置你的J2EE容器來打開用戶線程功能,你的應用作為Quartz計劃調度器創建的線程 被看作是用戶線程。以OC4J為例,你需要像下面這樣啟動OC4J來允許用戶線程:

java -jar oc4j.jar -userThreads

6 發布你的J2EE應用

然後在你的J2EE容器中發布你的應用。確信你的應用已經設置為隨著應用服務器一起 自動啟動。以OC4J為例,你必須確信設置了應用的web模塊的auto-start屬性和load-on- startup屬性為true。確信你在服務器配置文件中有以下內容:

server.xml:
<application name="quartz" path="../applications/quartz- app.ear" auto-start="true" />
http-web-site.xml:
<web-app application="quartz" name="quartz-web" load- on-startup="true" root="/quartz" />

7 現在你可以開始了

你的 EJB 方法現在已經被配置為每30分鐘執行一次的計劃任務了。

8 參考材料

Quartz 文檔: http://www.quartzscheduler.org/quartz

Dejan Bosanac 撰寫的Job Scheduling in Java

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved