欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Java框架介紹:Quartz從入門(mén)到進(jìn)階
你曾經(jīng)需要應用執行一個(gè)任務(wù)嗎?這個(gè)任務(wù)每天或每周星期二晚上11:30,或許僅僅每個(gè)月的最后一天執行。一個(gè)自動(dòng)執行而無(wú)須干預的任務(wù)在執行過(guò)程中如果發(fā)生一個(gè)嚴重錯誤,應用能夠知到其執行失敗并嘗試重新執行嗎?你和你的團隊是用java編程嗎?如果這些問(wèn)題中任何一個(gè)你回答是,那么你應該使用Quartz調度器。
  
  旁注:Matrix目前就大量使用到了Quartz。比如,排名統計功能的實(shí)現,在Jmatrix里通過(guò)Quartz定義了一個(gè)定時(shí)調度作業(yè),在每天凌晨一點(diǎn),作業(yè)開(kāi)始工作,重新統計大家的Karma和排名等。
  
  還有,RSS文件的生成,也是通過(guò)Quartz定義作業(yè),每隔半個(gè)小時(shí)生成一次RSS XML文件。
  
  所以Quartz使用的地方很多,本文無(wú)疑是一篇很好的入門(mén)和進(jìn)階的文章,在此,感謝David w Johnson的努力!
  
  Quartz讓作業(yè)調度簡(jiǎn)單
  
  Quartz是一個(gè)完全由java編寫(xiě)的開(kāi)源作業(yè)調度框架。不要讓作業(yè)調度這個(gè)術(shù)語(yǔ)嚇著(zhù)你。盡管Quartz框架整合了許多額外功能, 但就其簡(jiǎn)易形式看,你會(huì )發(fā)現它易用得簡(jiǎn)直讓人受不了!。簡(jiǎn)單地創(chuàng )建一個(gè)實(shí)現org.quartz.Job接口的java類(lèi)。Job接口包含唯一的方法:
  
  public void execute(JobExecutionContext context)
  throws JobExecutionException;
  
  在你的Job接口實(shí)現類(lèi)里面,添加一些邏輯到execute()方法。一旦你配置好Job實(shí)現類(lèi)并設定好調度時(shí)間表,Quartz將密切注意剩余時(shí)間。當調度程序確定該是通知你的作業(yè)的時(shí)候,Quartz框架將調用你Job實(shí)現類(lèi)(作業(yè)類(lèi))上的execute()方法并允許做它該做的事情。無(wú)需報告任何東西給調度器或調用任何特定的東西。僅僅執行任務(wù)和結束任務(wù)即可。如果配置你的作業(yè)在隨后再次被調用,Quartz框架將在恰當的時(shí)間再次調用它。
  
  如果你使用了其它流行的開(kāi)源框架象struts,你會(huì )對Quartz的設計和部件感到舒適。雖然兩個(gè)開(kāi)源工程是解決完全不同的問(wèn)題,還是有很多相似的之處,就是開(kāi)源軟件用戶(hù)每天感覺(jué)很舒適。Quartz能用在單機J2SE應用中,作為一個(gè)RMI服務(wù)器,也可以用在web應用中,甚至也可以用在J2EE應用服務(wù)器中。
  
  Quartz的發(fā)展史
  
  盡管Quartz今年開(kāi)始受到人們注意,但還是暫時(shí)流行。Quartz由James House創(chuàng )建并最初于2001年春天被加入sourceforge工程。接下來(lái)的幾年里,有許多新特征和版本出現,但是直到項目遷移到新的站點(diǎn)并成為OpenSymphony項目家族的一員,才開(kāi)始真正啟動(dòng)并受到應有的關(guān)注。
  
  James House仍然和幾個(gè)協(xié)助他的業(yè)余開(kāi)發(fā)者參與大量開(kāi)發(fā)工作。Quartz開(kāi)發(fā)團隊今年能發(fā)布幾個(gè)新版本,包括當前正處在候選發(fā)布階段的1.5版。
  
  上手Quartz
  
  Quartz工程駐留在OpenSymphony站點(diǎn)上。在Quartz站點(diǎn)上可以找到許多有用的資源:JavaDocs,包含指南的文檔,CVS訪(fǎng)問(wèn),用戶(hù)和開(kāi)發(fā)者論壇的連接,當然也有下載。
  
  從下載連接取得Quartz的發(fā)布版本,并且解壓到到本地目錄。這個(gè)下載文件包含了一個(gè)預先構建好的Quartz二進(jìn)制文件(quartz.jar),你可以將它放進(jìn)自己的應用中。Quartz框架只需要少數的第三方庫,并且這些三方庫是必需的,你很可能已經(jīng)在使用這些庫了。
  
  你要把Quartz的安裝目錄的<quartz- install>/lib/core 和 <quartz-install>/lib/optional目錄中的第三方庫加進(jìn)你自己的工程中。大多數第三方庫是我們所熟知和喜歡的標準Jakarta Commons庫,像Commons Logging, Commons BeantUtils等等。
  
  quartz.properties文件
  
  Quartz有一個(gè)叫做quartz.properties的配置文件,它允許你修改框架運行時(shí)環(huán)境。缺省是使用Quartz.jar里面的quartz.properties文件。當然,你應該創(chuàng )建一個(gè)quartz.properties文件的副本并且把它放入你工程的classes目錄中以便類(lèi)裝載器找到它。quartz.properties樣本文件如例1所示。
  
  例1.quartz.properties文件允許修改Quartz運行環(huán)境:
  
  #===============================================================
  # Configure Main Scheduler Properties
  #===============================================================
  org.quartz.scheduler.instanceName = QuartzSchedulerorg.quartz.scheduler.instanceId = AUTO
  #===============================================================
  # Configure ThreadPool
  #===============================================================
  org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPoolorg.quartz.threadPool.threadCount = 5org.quartz.threadPool.threadPriority = 5
  #===============================================================
  # Configure JobStore
  #===============================================================
  org.quartz.jobStore.misfireThreshold = 60000org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
  
  一旦將Quartz.jar文件和第三方庫加到自己的工程里面并且quartz.properties文件在工程的classes目錄中,就可以創(chuàng )建作業(yè)了。然而,在做這之前,我們暫且回避一下先簡(jiǎn)短討論一下Quartz架構。
  
  Quartz內部架構
  
  在規模方面,Quartz跟大多數開(kāi)源框架類(lèi)似。大約有300個(gè)java類(lèi)和接口,并被組織到12個(gè)包中。這可以和Apache Struts把大約325個(gè)類(lèi)和接口以及組織到11個(gè)包中相比。盡管規模幾乎不會(huì )用來(lái)作為衡量框架質(zhì)量的一個(gè)特性,但這里的關(guān)鍵是quarts內含很多功能,這些功能和特性集是否成為、或者應該成為評判一個(gè)開(kāi)源或非開(kāi)源框架質(zhì)量的因素。
  
  Quartz調度器
  
  Quartz框架的核心是調度器。調度器負責管理Quartz應用運行時(shí)環(huán)境。調度器不是靠自己做所有的工作,而是依賴(lài)框架內一些非常重要的部件。Quartz不僅僅是線(xiàn)程和線(xiàn)程管理。為確??缮炜s性,Quartz采用了基于多線(xiàn)程的架構。啟動(dòng)時(shí),框架初始化一套worker線(xiàn)程,這套線(xiàn)程被調度器用來(lái)執行預定的作業(yè)。這就是Quartz怎樣能并發(fā)運行多個(gè)作業(yè)的原理。Quartz依賴(lài)一套松耦合的線(xiàn)程池管理部件來(lái)管理線(xiàn)程環(huán)境。本片文障中,我們會(huì )多次提到線(xiàn)程池管理,但Quartz里面的每個(gè)對象是可配置的或者是可定制的。所以,例如,如果你想要插進(jìn)自己線(xiàn)程池管理設施,我猜你一定能!
  
  作業(yè)
  
  用Quartz的行話(huà)講,作業(yè)是一個(gè)執行任務(wù)的簡(jiǎn)單java類(lèi)。任務(wù)可以是任何java代碼。只需你實(shí)現org.quartz.Job接口并且在出現嚴重錯誤情況下拋出JobExecutionException異常即可。Job接口包含唯一的一個(gè)方法execute(),作業(yè)從這里開(kāi)始執行。一旦實(shí)現了Job接口和execute()方法,當Quartz確定該是作業(yè)運行的時(shí)候,它將調用你的作業(yè)。Execute()方法內就完全是你要做的事情。下面有一些你要在作業(yè)里面做事情的例子:
  
  · 用JavaMail(或者用其他的像Commons Net一樣的郵件框架)發(fā)送郵件
  · 創(chuàng )建遠程接口并且調用在EJB上的方法
  · 獲取Hibernate Session,查詢(xún)和更新關(guān)系數據庫里的數據
  · 使用OSWorkflow并且從作業(yè)調用一個(gè)工作流
  · 使用FTP和到處移動(dòng)文件
  · 調用Ant構建腳本開(kāi)始預定構建
  
  這種可能性是無(wú)窮的,正事這種無(wú)限可能性使得框架功能如此強大。Quartz給你提供了一個(gè)機制來(lái)建立具有不同粒度的、可重復的調度表,于是,你只需創(chuàng )建一個(gè)java類(lèi),這個(gè)類(lèi)被調用而執行任務(wù)。
  
  作業(yè)管理和存儲
  
  作業(yè)一旦被調度,調度器需要記住并且跟蹤作業(yè)和它們的執行次數。如果你的作業(yè)是30分鐘后或每30秒調用,這不是很有用。事實(shí)上,作業(yè)執行需要非常準確和即時(shí)調用在被調度作業(yè)上的execute()方法。Quartz通過(guò)一個(gè)稱(chēng)之為作業(yè)存儲(JobStore)的概念來(lái)做作業(yè)存儲和管理。
  
  有效作業(yè)存儲
  
  Quartz提供兩種基本作業(yè)存儲類(lèi)型。第一種類(lèi)型叫做RAMJobStore,它利用通常的內存來(lái)持久化調度程序信息。這種作業(yè)存儲類(lèi)型最容易配置、構造和運行。對許多應用來(lái)說(shuō),這種作業(yè)存儲已經(jīng)足夠了。然而,因為調度程序信息是存儲在被分配給JVM的內存里面,所以,當應用程序停止運行時(shí),所有調度信息將被丟失。如果你需要在重新啟動(dòng)之間持久化調度信息,則將需要第二種類(lèi)型的作業(yè)存儲。
  
  第二種類(lèi)型的作業(yè)存儲實(shí)際上提供兩種不同的實(shí)現,但兩種實(shí)現一般都稱(chēng)為JDBC作業(yè)存儲。兩種JDBC作業(yè)存儲都需要JDBC驅動(dòng)程序和后臺數據庫來(lái)持久化調度程序信息。這兩種類(lèi)型的不同在于你是否想要控制數據庫事務(wù)或這釋放控制給應用服務(wù)器例如BEA‘s WebLogic或Jboss。(這類(lèi)似于J2EE領(lǐng)域中,Bean管理的事務(wù)和和容器管理事務(wù)之間的區別)
  
  這兩種JDBC作業(yè)存儲是:
  
  ·JobStoreTX:當你想要控制事務(wù)或工作在非應用服務(wù)器環(huán)境中是使用
  ·JobStoreCMT:當你工作在應用服務(wù)器環(huán)境中和想要容器控制事務(wù)時(shí)使用。
  
  JDBC作業(yè)存儲為需要調度程序維護調度信息的用戶(hù)而設計。
  
  作業(yè)和觸發(fā)器
  
  Quartz設計者做了一個(gè)設計選擇來(lái)從調度分離開(kāi)作業(yè)。Quartz中的觸發(fā)器用來(lái)告訴調度程序作業(yè)什么時(shí)候觸發(fā)??蚣芴峁┝艘话延|發(fā)器類(lèi)型,但兩個(gè)最常用的是SimpleTrigger和CronTrigger。SimpleTrigger為需要簡(jiǎn)單打火調度而設計。典型地,如果你需要在給定的時(shí)間和重復次數或者兩次打火之間等待的秒數打火一個(gè)作業(yè),那么SimpleTrigger適合你。另一方面,如果你有許多復雜的作業(yè)調度,那么或許需要CronTrigger。
  
  CronTrigger是基于Calendar-like調度的。當你需要在除星期六和星期天外的每天上午10點(diǎn)半執行作業(yè)時(shí),那么應該使用CronTrigger。正如它的名字所暗示的那樣,CronTrigger是基于Unix克隆表達式的。
  
  作為一個(gè)例子,下面的Quartz克隆表達式將在星期一到星期五的每天上午10點(diǎn)15分執行一個(gè)作業(yè)。
  
  0 15 10 ? * MON-FRI
  
  下面的表達式
  
  0 15 10 ? * 6L 2002-2005
  
  將在2002年到2005年的每個(gè)月的最后一個(gè)星期五上午10點(diǎn)15分執行作業(yè)。
  
  你不可能用SimpleTrigger來(lái)做這些事情。你可以用兩者之中的任何一個(gè),但哪個(gè)跟合適則取決于你的調度需要。
  
  調度一個(gè)作業(yè)
  
  讓我們通過(guò)看一個(gè)例子來(lái)進(jìn)入實(shí)際討論?,F假定你管理一個(gè)部門(mén),無(wú)論何時(shí)候客戶(hù)在它的FTP服務(wù)器上存儲一個(gè)文件,都得用電子郵件通知它。我們的作業(yè)將用FTP登陸到遠程服務(wù)器并下載所有找到的文件。然后,它將發(fā)送一封含有找到和下載的文件數量的電子郵件。這個(gè)作業(yè)很容易就幫助人們整天從手工執行這個(gè)任務(wù)中解脫出來(lái),甚至連晚上都無(wú)須考慮。我們可以設置作業(yè)循環(huán)不斷地每60秒檢查一次,而且工作在7×24模式下。這就是Quartz框架完全的用途。
  
  首先創(chuàng )建一個(gè)Job類(lèi),將執行FTP和Email邏輯。下例展示了Quartz的Job類(lèi),它實(shí)現了org.quartz.Job接口。
  
  例2.從FTP站點(diǎn)下載文件和發(fā)送email的Quartz作業(yè)
  
  public class ScanFTPSiteJob implements Job {
  private static Log logger = LogFactory.getLog(ScanFTPSiteJob.class);
  /*
  * Called the scheduler framework at the right time
  */  public void execute(JobExecutionContext context)
  throws JobExecutionException {
  JobDataMap jobDataMap = context.getJobDataMap();
  try {
  // Check the ftp site for files
  File[] files = JobUtil.checkForFiles(jobDataMap);
  JobUtil.sendEmail(jobDataMap, files);
  } catch (Exception ex) {
  throw new JobExecutionException(ex.getMessage());
  }
  }}
  
  我們故意讓ScanFTPSiteJob保持很簡(jiǎn)單。我們?yōu)檫@個(gè)例子創(chuàng )建了一個(gè)叫做JobUtil的實(shí)用類(lèi)。它不是Quartz的組成部分,但對構建各種作業(yè)能重用的實(shí)用程序庫來(lái)說(shuō)是有意義的。我們可以輕易將那種代碼組織進(jìn)作業(yè)類(lèi)中,quarts 調度器一樣好用,因為我們一直在使用quarts,所以那些代碼可繼續重用。
  
  JobUtil.checkForFiles() and JobUtil.sendEmail()方法使用的參數是Quartz創(chuàng )建的JobDataMap的實(shí)例。實(shí)例為每個(gè)作業(yè)的執行而創(chuàng )建,它是向作業(yè)類(lèi)傳遞配置參數的方法。
  
  這里并沒(méi)有展示JobUtil的實(shí)現,但我們能用Jakarta上的Commons Net輕易地實(shí)現FTP和Email功能。
  
  用調度器調用作業(yè)
  
  首先創(chuàng )建一個(gè)作業(yè),但為使作業(yè)能被調度器調用,你得向調度程序說(shuō)明你的作業(yè)的調用時(shí)間和頻率。這個(gè)事情由與作業(yè)相關(guān)的觸發(fā)器來(lái)完成。因為我們僅僅對大約每60秒循環(huán)調用作業(yè)感興趣,所以打算使用SimpleTrigger。
  
  作業(yè)和觸發(fā)器通過(guò)Quartz調度器接口而被調度。我們需要從調度器工廠(chǎng)類(lèi)取得一個(gè)調度器的實(shí)例。最容易的辦法是調用StdSchedulerFactory這個(gè)類(lèi)上的靜態(tài)方法getDefaultScheduler()。
  
  使用Quartz框架,你需要調用start()方法來(lái)啟動(dòng)調度器。例3的代碼遵循了大多數Quartz應用的一般模式:創(chuàng )建一個(gè)或多個(gè)作業(yè),創(chuàng )建和設置觸發(fā)器,用調度器調度作業(yè)和觸發(fā)器,啟動(dòng)調度器。
  
  例3.Quartz作業(yè)通過(guò)Quartz調度器而被調度
  
  public class MyQuartzServer {
  public static void main(String[] args) {
  MyQuartzServer server = new MyQuartzServer();
  try {
  server.startScheduler();
  } catch (SchedulerException ex) {
  ex.printStackTrace();
  }
  }
  protected void startScheduler() throws SchedulerException {
  // Use the factory to create a Scheduler instance
  Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
  // JobDetail holds the definition for Jobs
  JobDetail jobDetail = new JobDetail("ScanFTPJob", Scheduler.DEFAULT_GROUP,
  ScanFTPSiteJob.class);// Store job parameters to be used within execute()jobDetail.getJobDataMap().put("FTP_HOST", "\\home\\cavaness\\inbound");
  // Other neccessary Job parameters here
  // Create a Trigger that fires every 60 seconds
  Trigger trigger = TriggerUtils.makeSecondlyTrigger(60);
  // Setup the Job and Trigger with the Scheduler
  scheduler.scheduleJob(jobDetail, trigger );
  // Start the Scheduler running
  scheduler.start();
  }}
  
  編程調度同聲明性調度
  
  例3中,我們通過(guò)編程的方法調度我們的ScanFTPSiteJob作業(yè)。就是說(shuō),我們用java代碼來(lái)設置作業(yè)和觸發(fā)器。Quartz框架也支持在xml文件里面申明性的設置作業(yè)調度。申明性方法允許我們更快速地修改哪個(gè)作業(yè)什么時(shí)候被執行。
  
  Quartz框架有一個(gè)插件,這個(gè)插件負責讀取xml配置文件。xml配置文件包含了關(guān)于啟動(dòng)Quartz應用的作業(yè)和觸發(fā)器信息。所有xml文件中的作業(yè)連同相關(guān)的觸發(fā)器都被加進(jìn)調度器。你仍然需要編寫(xiě)作業(yè)類(lèi),但配置那些作業(yè)類(lèi)的調度器則非常動(dòng)態(tài)化。例4展示了一個(gè)用申明性方式執行與例3代碼相同的邏輯的xml配置文件。
  
  例4.能使用xml文件調度的作業(yè)
  
  <?xml version=‘1.0‘ encoding=‘utf-8‘?><quartz>
  <job>
  <job-detail>
  <name>ScanFTPSiteJob</name>
  <group>DEFAULT</group>
  <description>
  A job that scans an ftp site for files
  </description>
  <job-class>ScanFTPSiteJob</job-class>
  <job-data-map allows-transient-data="true">
  <entry>
  <key>FTP_HOST</key>
  <value>\home\cavaness\inbound</value>
  </entry>
  <!-- Other neccessary Job parameters here -->
  </job-data-map>
  </job-detail>
  <trigger>
  <simple>
  <name>ScanFTPSiteJobTrigger</name>
  <group>DEFAULT</group>
  <job-name>ScanFTPSiteJob</job-name>
  <job-group>DEFAULT</job-group>
  <start-time>2005-09-11 6:10:00 PM</start-time>
  <!-- repeat indefinitely every 60 seconds -->
  <repeat-count>-1</repeat-count>
  <repeat-interval>60000</repeat-interval>
  </simple>
  </trigger>
  </job></quartz>
  
  你可以將xml文件中的元素跟例3代碼作個(gè)比較,它們從概念上來(lái)看是相同的。使用例4式的申明性方法的好處是維護變得極其簡(jiǎn)單,只需改變xml配置文件和重新啟動(dòng)Quartz應用即可。無(wú)須修改代碼,無(wú)須重新編譯,無(wú)須重新部署。
  
  有狀態(tài)和無(wú)狀態(tài)作業(yè)
  
  在本文中你所看到的作業(yè)到是無(wú)狀態(tài)的。這意味著(zhù)在兩次作業(yè)執行之間,不會(huì )去維護作業(yè)執行時(shí)JobDataMap的狀態(tài)改變。如果你需要能增、刪,改JobDataMap的值,而且能讓作業(yè)在下次執行時(shí)能看到這個(gè)狀態(tài)改變,則需要用Quartz有狀態(tài)作業(yè)。
  
  如果你是一個(gè)有經(jīng)驗的EJB開(kāi)發(fā)者的話(huà),深信你會(huì )立即退縮,因為有狀態(tài)帶有負面含義。這主要是由于EJB帶來(lái)的伸縮性問(wèn)題。Quartz有狀態(tài)作業(yè)實(shí)現了org.quartz.StatefulJob接口。無(wú)狀態(tài)和有狀態(tài)作業(yè)的關(guān)鍵不同是有狀態(tài)作業(yè)在每次執行時(shí)只有一個(gè)實(shí)例。大多數情況下,有狀態(tài)的作業(yè)不回帶來(lái)大的問(wèn)題。然而,如果你有一個(gè)需要頻繁執行的作業(yè)或者需要很長(cháng)時(shí)間才能完成的作業(yè),那么有狀態(tài)作業(yè)可能給你帶來(lái)伸縮性問(wèn)題。
  
  Quartz框架的其他特征
  
  Quartz框架有一個(gè)豐富的特征集。事實(shí)上,quarts有太多特性以致不能在一種情況中全部領(lǐng)會(huì ),下面列出了一些有意思的特征,但沒(méi)時(shí)間在此詳細討論。
  
  監聽(tīng)器和插件
  
  每個(gè)人都喜歡監聽(tīng)和插件。今天,幾乎下載任何開(kāi)源框架,你必定會(huì )發(fā)現支持這兩個(gè)概念。監聽(tīng)是你創(chuàng )建的java類(lèi),當關(guān)鍵事件發(fā)生時(shí)會(huì )收到框架的回調。例如,當一個(gè)作業(yè)被調度、沒(méi)有調度或觸發(fā)器終止和不再打火時(shí),這些都可以通過(guò)設置來(lái)來(lái)通知你的監聽(tīng)器。Quartz框架包含了調度器監聽(tīng)、作業(yè)和觸發(fā)器監聽(tīng)。你可以配置作業(yè)和觸發(fā)器監聽(tīng)為全局監聽(tīng)或者是特定于作業(yè)和觸發(fā)器的監聽(tīng)。
  
  一旦你的一個(gè)具體監聽(tīng)被調用,你就能使用這個(gè)技術(shù)來(lái)做一些你想要在監聽(tīng)類(lèi)里面做的事情。例如,你如果想要在每次作業(yè)完成時(shí)發(fā)送一個(gè)電子郵件,你可以將這個(gè)邏輯寫(xiě)進(jìn)作業(yè)里面,也可以JobListener里面。寫(xiě)進(jìn)JobListener的方式強制使用松耦合有利于設計上做到更好。
  
  Quartz插件是一個(gè)新的功能特性,無(wú)須修改Quartz源碼便可被創(chuàng )建和添加進(jìn)Quartz框架。他為想要擴展Quartz框架又沒(méi)有時(shí)間提交改變給Quartz開(kāi)發(fā)團隊和等待新版本的開(kāi)發(fā)人員而設計。如果你熟悉Struts插件的話(huà),那么完全可以理解Quartz插件的使用。
  
  與其Quartz提供一個(gè)不能滿(mǎn)足你需要的有限擴展點(diǎn),還不如通過(guò)使用插件來(lái)?yè)碛锌尚拚臄U展點(diǎn)。
  
  集群Quartz應用
  
  Quartz應用能被集群,是水平集群還是垂直集群取決于你自己的需要。集群提供以下好處:
  
  ·伸縮性
  ·搞可用性
  ·負載均衡
  
  目前,Quartz只能借助關(guān)系數據庫和JDBC作業(yè)存儲支持集群。將來(lái)的版本這個(gè)制約將消失并且用RAMJobStore集群將是可能的而且將不需要數據庫的支持。
  
  Quartz web應用
  
  使用框架幾個(gè)星期或幾個(gè)月后,Quartz用戶(hù)所顯示的需求之一是需要集成Quartz到圖形用戶(hù)界面中。目前Quartz框架已經(jīng)有一些工具允許你使用Java servlet來(lái)初始化和啟動(dòng)Quartz。一旦你可以訪(fǎng)問(wèn)調度器實(shí)例,你就可以把它存儲在web容器的servlet上下文中(ServletContext中)并且可以通過(guò)調度器接口管理調度環(huán)境。
  
  幸運的是一些開(kāi)發(fā)者已正影響著(zhù)單機Quartz web應用,它用來(lái)更好地管理調度器環(huán)境。構建在若干個(gè)流行開(kāi)源框架如Struts和Spring之上的圖形用戶(hù)界面支持很多功能,這些功能都被包裝進(jìn)一個(gè)簡(jiǎn)單接口。GUI的一個(gè)畫(huà)面如圖1所示:
   

  圖1.Quartz Web應用允許比較容易地管理Quartz環(huán)境。
  
  Quartz的下一步計劃
  
  Quartz是一個(gè)活動(dòng)中的工程。Quartz開(kāi)發(fā)團隊明確表示不會(huì )停留在已有的榮譽(yù)上。Quartz下一個(gè)主要版本已經(jīng)在啟動(dòng)中。你可以在OpenSymphony的 wiki上體驗一下Quartz 2.0的設計和特征。
  
  總之,Quartz用戶(hù)每天都自由地添加特性建議和設計創(chuàng )意以便能被核心框架考慮(看重)。
  
  了解更多Quartz特征
  
  當你開(kāi)始使用Quartz框架的更多特性時(shí),User and Developer Forum論壇變成一個(gè)回答問(wèn)題和跟其他Quartz用戶(hù)溝通的極其有用的資源。經(jīng)常去逛逛這個(gè)論壇時(shí)很有好處的,你也可以依靠James House來(lái)共享與你的需要相關(guān)的知識和意見(jiàn)。
  
  這個(gè)論壇時(shí)免費的,你不必登陸便可以查找和查看歸檔文件。然而,如果你覺(jué)得這個(gè)論壇比較好而且需要向某人回復問(wèn)題時(shí),你必須得申請一個(gè)免費賬號并用該賬號登陸。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Quartz從入門(mén)到進(jìn)階
企業(yè)級任務(wù)調度框架Quartz 三 一個(gè)簡(jiǎn)單的Quartz 例子
C#作業(yè)調度Quartz.NET學(xué)習筆記
Net作業(yè)調度(五)
輕裝上陣:無(wú)配置文件情況下使用Quartz.NET - dudu - 博客園
Spring整合Quartz輕松完成定時(shí)任務(wù)了解一下?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久