日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Quartz 框架快速入门(三)

發(fā)布時(shí)間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Quartz 框架快速入门(三) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?在前面兩篇文章中簡(jiǎn)單介紹了在java應(yīng)用程序中如何使用Quartz框架,這一篇中我們將看到如何在web環(huán)境下通過(guò)配置文件來(lái)完成Quartz的后臺(tái)作業(yè)調(diào)度,而不必手工去創(chuàng)建TriggerScheduler,其步驟如下:

首先創(chuàng)建一個(gè)Web項(xiàng)目,將quartz-1.6.0.jar,以及lib目錄下面core下所有jaroptional目錄下的所有commons-beanutils.jarcommons-digester-1.7.jarbuild目錄下的jta.jar都放入Web項(xiàng)目的WEB-INF"lib目錄下。

創(chuàng)建一個(gè)簡(jiǎn)單的jobHelloWorld,它的功能很簡(jiǎn)單,就是輸出當(dāng)前的時(shí)間,代碼如下:

然后按照上一篇文章《Quartz 框架快速入門(二)》中所講述的內(nèi)容編寫quartz.properties文件。如果啟動(dòng)項(xiàng)目的時(shí)候,Quartz沒(méi)有在工程中找到該文件,就會(huì)從自己的jar包下面讀取其默認(rèn)的properties文件,其內(nèi)容如下

#============================================================================
#?Configure?Main?Scheduler?Properties??
#============================================================================
org.quartz.scheduler.instanceName?=?QuartzScheduler
org.quartz.scheduler.instanceId?=?AUTO
#============================================================================
#?Configure?ThreadPool??
#============================================================================
org.quartz.threadPool.class?=?org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount?=?5
org.quartz.threadPool.threadPriority?=?5
#============================================================================
#?Configure?JobStore??
#============================================================================
org.quartz.jobStore.misfireThreshold?=?60000
org.quartz.jobStore.class?=?org.quartz.simpl.RAMJobStore
#============================================================================
#?Configure?Plugins?
#============================================================================
org.quartz.plugin.triggHistory.class?=?org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.class?=?org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileNames?=?jobs.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs?=?true
org.quartz.plugin.jobInitializer.failOnFileNotFound?=?true
org.quartz.plugin.jobInitializer.scanInterval?=?10
org.quartz.plugin.jobInitializer.wrapInUserTransaction?=?false

然后編寫任務(wù)配置文件jobs.xml,內(nèi)容如下:

<?xml?version='1.0'?encoding='utf-8'?>
<quartz?xmlns="http://www.opensymphony.com/quartz/JobSchedulingData"
??xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
??xsi:schemaLocation
="http://www.opensymphony.com/quartz/JobSchedulingData
??http://www.opensymphony.com/quartz/xml/job_scheduling_data_1_5.xsd"

??version
="1.5">???
?
<job>??????
????
<job-detail>??????
?????
<name>HelloWorld</name>??????
?????
<group>DEFAULT</group>??????
?????
<description>??????
???????????A?job?that?just?for?test???????
?????
</description>??????
?????
<job-class>??????
????????????com.vista.quartz.Helloworld??????
?????
</job-class>??????
?????
<volatility>false</volatility>??????
?????
<durability>false</durability>??????
?????
<recover>false</recover>??????????
??
</job-detail>??????
??
<trigger>??????
????
<simple>??????
?????
<name>HelloTrigger1</name>??????
?????
<group>DEFAULT</group>??????
?????
<job-name>HelloWorld</job-name>??????
?????
<job-group>DEFAULT</job-group>??????
?????
<start-time>2008-09-03T15:56:30</start-time>??????
?????
<!--?repeat?indefinitely?every?10?seconds?-->??????
?????
<repeat-count>-1</repeat-count>??????
?????
<repeat-interval>10000</repeat-interval>??????
????
</simple>??????
??
</trigger>??????
</job>??????
</quartz>

可以看到,在配置文件中把jobdetailtrigger都作了完整的定義,并組合成一個(gè)job。下面,我們把上面兩個(gè)文件都放入/WEB-INF/classes目錄下,然后按照api中的說(shuō)明修改一下web.xml,內(nèi)容如下

<?xml?version="1.0"?encoding="UTF-8"?>
<web-app?version="2.4"?
????xmlns
="http://java.sun.com/xml/ns/j2ee"?
????xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"?
????xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee?
????http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
????
<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>??
????????
<init-param>??
????????????
<param-name>config-file</param-name>??
????????????
<param-value>/quartz.properties</param-value>??
????????
</init-param>??
????????
<init-param>??
????????????
<param-name>shutdown-on-unload</param-name>??
????????????
<param-value>true</param-value>??
???????
</init-param>??
????
</servlet>??
??
<welcome-file-list>
????
<welcome-file>index.jsp</welcome-file>
??
</welcome-file-list>
</web-app>

這樣,在啟動(dòng)Tomcat的時(shí)候,QuartzInitializerServlet這個(gè)Servlet就會(huì)自動(dòng)讀取quartz.properties這個(gè)配置文件,并初始化調(diào)度信息,啟動(dòng)Scheduler

啟動(dòng)tomcat后,就可以看到輸出的結(jié)果:

?

package?com.vista.quartz;

import?java.util.Date;

import?org.apache.commons.logging.Log;
import?org.apache.commons.logging.LogFactory;
import?org.quartz.Job;
import?org.quartz.JobExecutionContext;
import?org.quartz.JobExecutionException;

public?class?Helloworld?implements?Job
{
????
private?static?Log?logger?=?LogFactory.getLog(Helloworld.class);//日志記錄器
????public?Helloworld()
????{
????}
????
public?void?execute(JobExecutionContext?context)?throws?JobExecutionException?
????{
????????logger.info(
"Hello?World!?-?"?+?new?Date());?
????}
}

總結(jié)

以上是生活随笔為你收集整理的Quartz 框架快速入门(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。