精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Quartz在Web應(yīng)用中單獨(dú)使用

jf_78858299 ? 來源:SpringBoot ? 作者:林祥纖 ? 2023-04-12 10:55 ? 次閱讀

Quartz也常用在Web應(yīng)用中,常見的是交由Spring托管的形式,但這里并非介紹這個(gè)。這里介紹Quartz在Web應(yīng)用中單獨(dú)使用。我們看下本章的大綱:

(1)大體思路說明;

(2)新建一個(gè)Web Project;

(3)創(chuàng)建一個(gè)Job;

(4)創(chuàng)建一個(gè)ApplicationContextListener;

(5)常用的Cron Schedule;

接下來看下具體的內(nèi)容:

(1)大體思路說明;

一般來說,Web應(yīng)用啟動(dòng)時(shí),應(yīng)注冊(cè)已經(jīng)確定的定時(shí)任務(wù);一些動(dòng)態(tài)的、未確定觸發(fā)時(shí)間的定時(shí)任務(wù),后續(xù)可通過靜態(tài)的Scheduler注冊(cè)。

所以我們創(chuàng)建一個(gè)Web項(xiàng)目,在ServerContextListener初始化的時(shí)候,添加我們的定時(shí)定時(shí)任務(wù)調(diào)度器,在銷毀的時(shí)候,關(guān)閉任務(wù)調(diào)度器。

(2)新建一個(gè)Web Project;

新建一個(gè)web maven project。

在pom.xml文件中添加依賴:

<groupId>org.quartz-scheduler<span class="hljs-name"groupId>

        <artifactId>quartz<span class="hljs-name"artifactId>

        <version>2.2.3<span class="hljs-name"version>

javax.servlet

servlet-api

3.1-b02

(3)創(chuàng)建一個(gè)Job;

創(chuàng)建一個(gè)實(shí)現(xiàn)Job類的Class取名為HelloJob,代碼如下:

package com.kfit.job;

import java.util.Date;

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

/**

  • 任務(wù)類.
  • @author Angel --守護(hù)天使
  • @version v.0.1
  • @date 2017年4月21日

*/

**public **class HelloJob implements Job{

**public ****void** execute(JobExecutionContext context) **throws **JobExecutionException {

    // 執(zhí)行響應(yīng)的任務(wù).

   System. ***out*** .println("HelloJob.execute,"+**new** Date());

  

}

}

(4)創(chuàng)建一個(gè)ApplicationContextListener;

新建一個(gè)實(shí)現(xiàn)ServletContextListener的類ApplicationContextListener,代碼如下:

package com.kfit.job;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import javax.servlet.annotation.WebListener;

import org.quartz.JobBuilder;

import org.quartz.JobDetail;

import org.quartz.Scheduler;

import org.quartz.SchedulerException;

import org.quartz.SimpleScheduleBuilder;

import org.quartz.Trigger;

import org.quartz.TriggerBuilder;

import org.quartz.impl.StdSchedulerFactory;

@WebListener

**public **class ApplicationContextListener implements ServletContextListener{

**private** Scheduler scheduler =  **null** ;



**public ****void** contextInitialized(ServletContextEvent arg0) {

   **try** {

       /*

        *在 Quartz 中, scheduler 由 scheduler 工廠創(chuàng)建:DirectSchedulerFactory 或者 StdSchedulerFactory。第二種工廠 StdSchedulerFactory 使用較多,

        *因?yàn)?DirectSchedulerFactory 使用起來不夠方便,需要作許多詳細(xì)的手工編碼設(shè)置。

        */

       // 獲取Scheduler實(shí)例

       scheduler = StdSchedulerFactory. *getDefaultScheduler* ();

       scheduler.start();

       System. ***out*** .println("scheduler.start");

       System. ***out*** .println(scheduler.getSchedulerName());

      

       //具體任務(wù).

       JobDetail jobDetail = JobBuilder. *newJob* (HelloJob. **class** ).withIdentity("job1","group1").build();

      

       //觸發(fā)時(shí)間點(diǎn). (每5秒執(zhí)行1次.)

       SimpleScheduleBuilder simpleScheduleBuilder =SimpleScheduleBuilder. *simpleSchedule* ().withIntervalInSeconds(5).repeatForever();

       Trigger trigger = TriggerBuilder. *newTrigger* ().withIdentity("trigger1","group1").startNow().withSchedule(simpleScheduleBuilder).build();

       // 交由Scheduler安排觸發(fā)

       scheduler.scheduleJob(jobDetail,trigger);

   } **catch** (SchedulerException e) {

       e.printStackTrace();

   }

}



**public ****void** contextDestroyed(ServletContextEvent arg0) {

   **try** {

       scheduler.shutdown();

   } **catch** (SchedulerException e) {

       e.printStackTrace();

   }//關(guān)閉定時(shí)任務(wù)調(diào)度器.

}

}

(5)常用的Cron Schedule;

相對(duì)于其他方式定義定時(shí)任務(wù)的觸發(fā)時(shí)間,我們較常用Cron Schedule:

// 具體任務(wù)

JobDetail job = JobBuilder.newJob(HelloJob. **class** ).withIdentity("job1", "group1").build();



   // 觸發(fā)時(shí)間點(diǎn)

   CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0 * * * * ? *");

   Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")

           .withSchedule(cronScheduleBuilder).build();

// 交由Scheduler安排觸發(fā)

scheduler.scheduleJob(job, trigger);

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1257

    瀏覽量

    69368
  • Quartz
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    7930
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    338

    瀏覽量

    14312
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    智能手表Quartz

    本帖最后由 idianze 于 2017-4-14 09:55 編輯   導(dǎo)讀:日前,中興發(fā)布首款智能手表Quartz,高顏值、支持3G,售價(jià)1324元。  中興(ZTE)昨晚發(fā)布了旗下首款
    發(fā)表于 04-14 09:53

    怎么Web頁面實(shí)現(xiàn)簡單的按鈕按壓?

    嗨,我們已經(jīng)修改了使用和諧棧的Web服務(wù)器示例。現(xiàn)在我們希望Web頁面實(shí)現(xiàn)簡單的按鈕按壓。當(dāng)按下按鈕時(shí),我們應(yīng)該把消息發(fā)送到調(diào)試端口。MEMCMP(文件名,“1234。HTM”,8
    發(fā)表于 10-17 09:02

    web服務(wù)器監(jiān)控系統(tǒng)設(shè)計(jì)的應(yīng)用技巧有哪些?

    本文根據(jù)監(jiān)控系統(tǒng)對(duì)數(shù)據(jù)吞吐量和安全可靠性等各方面的實(shí)際要求,結(jié)合相關(guān)研究的新進(jìn)展,深入討論了web服務(wù)器監(jiān)控系統(tǒng)設(shè)計(jì)的應(yīng)用技巧,并詳細(xì)做了實(shí)現(xiàn)上的闡述。對(duì)所有基于嵌入式web技術(shù)的
    發(fā)表于 06-04 06:56

    Java基于WEB的嵌入式系統(tǒng)的應(yīng)用

    該文提出了一種基于uClinux 嵌入式操作系統(tǒng)的嵌入式系統(tǒng),使用Java 實(shí)現(xiàn)嵌入式實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)數(shù)據(jù)WEB 實(shí)時(shí)圖形化顯示的方
    發(fā)表于 09-18 10:46 ?31次下載

    基于Web Service 的GIS農(nóng)業(yè)的應(yīng)用

    本文針對(duì)傳統(tǒng) GIS 存在的數(shù)據(jù)共享困難、開發(fā)過程復(fù)雜的缺陷,首先簡述了WebService技術(shù),進(jìn)而提出了基于 Web Service 的 GIS 開發(fā)模型并描述了其運(yùn)行過程,最后討論了基于 Web Serv
    發(fā)表于 12-12 15:01 ?10次下載

    Web技術(shù)智能建筑中央空調(diào)的應(yīng)用

    根據(jù)中央空調(diào)控制系統(tǒng)的特點(diǎn)和系統(tǒng)集成的現(xiàn)狀,闡述了將Web Services技術(shù)應(yīng)用于智能建筑系統(tǒng)集成的方法。構(gòu)建了基于Web Services的智能建筑系統(tǒng)集成的結(jié)構(gòu),并介紹了其工作原
    發(fā)表于 01-22 14:36 ?12次下載

    Quartz DRC和Quartz LVS:最快速的全線性物

    微Wintegra公司使用微捷碼Quartz物理驗(yàn)證產(chǎn)品成功完成了最新的低功耗、高性能65納米芯片的投片。擁有了Quartz DRC和Quartz LVS的先進(jìn)功能,Wintegra能夠使用臺(tái)積電(TSMC)65納米規(guī)則運(yùn)行集快
    發(fā)表于 06-24 09:01 ?1080次閱讀

    嵌入式 Linux 智能設(shè)備采用 Web 支持

    雖然嵌入式 Linux 智能設(shè)備采用 Web 支持已經(jīng)解決了很多問題,但是還有一些和設(shè)備相關(guān)的特殊功能是 Web 支持不能提供的。
    發(fā)表于 05-04 16:45 ?685次閱讀
    <b class='flag-5'>在</b>嵌入式 Linux 智能設(shè)備<b class='flag-5'>中</b>采用 <b class='flag-5'>Web</b> 支持

    spring4.0如何整合Quartz實(shí)現(xiàn)任務(wù)調(diào)度詳細(xì)資料和程序說明

    Quartz框架是一個(gè)全功能、開源的任務(wù)調(diào)度服務(wù),可以集成幾乎任何的java應(yīng)用程序—從小的單片機(jī)系統(tǒng)到大型的電子商務(wù)系統(tǒng)。Quartz可以執(zhí)行上千上萬的任務(wù)調(diào)度。
    發(fā)表于 05-06 18:23 ?1次下載
    spring4.0如何整合<b class='flag-5'>Quartz</b>實(shí)現(xiàn)任務(wù)調(diào)度詳細(xì)資料和程序說明

    如何使用spring4.0整合Quartz實(shí)現(xiàn)動(dòng)態(tài)任務(wù)調(diào)度的程序資料說明

    Quartz框架是一個(gè)全功能、開源的任務(wù)調(diào)度服務(wù),可以集成幾乎任何的java應(yīng)用程序—從小的單片機(jī)系統(tǒng)到大型的電子商務(wù)系統(tǒng)。Quartz可以執(zhí)行上千上萬的任務(wù)調(diào)度。
    發(fā)表于 04-26 18:26 ?0次下載
    如何使用spring4.0整合<b class='flag-5'>Quartz</b>實(shí)現(xiàn)動(dòng)態(tài)任務(wù)調(diào)度的程序資料說明

    web開發(fā)django快速使用指南

    使用python開發(fā)web,使用Django,使你能夠以最小的代價(jià)構(gòu)建和維護(hù)高質(zhì)量的Web應(yīng)用。Python各種web框架
    的頭像 發(fā)表于 05-05 22:19 ?3247次閱讀
    <b class='flag-5'>web</b>開發(fā)<b class='flag-5'>中</b>django快速使用指南

    Quartz任務(wù)調(diào)度基本實(shí)現(xiàn)原理

    Quartz是一個(gè)完全由Java編寫的開源作業(yè)調(diào)度框架,為Java應(yīng)用程序中進(jìn)行作業(yè)調(diào)度提供了簡單卻強(qiáng)大的機(jī)制。Quartz允許開發(fā)人員根據(jù)時(shí)間間隔來調(diào)度作業(yè)。它實(shí)現(xiàn)了作業(yè)和觸發(fā)器的多對(duì)多的關(guān)系,還能把多個(gè)作業(yè)與不同的觸發(fā)器關(guān)
    的頭像 發(fā)表于 04-12 10:48 ?962次閱讀

    Quartz編碼中用到的幾個(gè)對(duì)象

    使用Quartz的時(shí)候,我們需要用到Quartz的幾個(gè)對(duì)象:Job(任務(wù)),JobDetail(任務(wù)定義:使用JobDetail來定義定時(shí)任務(wù)的實(shí)例),Trigger(觸發(fā)器:任務(wù)
    的頭像 發(fā)表于 04-12 10:50 ?420次閱讀

    Spring Boot QuartzJava Project的使用

    這一篇文章,我們緊接著上一篇的文章,講講Quartzjava project的項(xiàng)目中如何進(jìn)行使用,在這里我們使用maven進(jìn)行構(gòu)建項(xiàng)目。先看下本章的大綱:
    的頭像 發(fā)表于 04-12 10:53 ?825次閱讀

    base64Web開發(fā)的作用

    Web開發(fā),數(shù)據(jù)的傳輸和存儲(chǔ)是核心任務(wù)之一。然而,并非所有數(shù)據(jù)都可以直接在Web環(huán)境中高效傳輸。例如,二進(jìn)制數(shù)據(jù)(如圖片、音頻和視頻)
    的頭像 發(fā)表于 11-10 11:07 ?259次閱讀