亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java Web應用中如何實現任務有效調度

2019-11-18 11:13:37
字體:
來源:轉載
供稿:網友

任務調度是大型J2EE web應用中常見的工作。開發者希望以指定的間隔時間執行各類操作,并完成一些無需用戶輸入的任務。java中可有無數方法來做到這一點,但是在web應用中卻并沒有這方面的統一標準。當許多開發人員參與同一個項目,并且以各自不同的方式來實現任務調度時,就可能產生很大問題。內存和同步問題就是必須首先考慮的兩件事。事實上,一些開發者試圖調用操作系統層面的任務調度機制,如Unix平臺上的cron。這種編程實踐也許并不是太壞,但它將直接導致可移植性被拋到九霄云外。

作者:Chris Hardin;Caesar(作者的blog:http://blog.matrix.org.cn/page/Caesar)
原文:http://www.matrix.org.cn/resource/article/44/44357_Quartz+Java.Html
要害字:Quartz;scheduling

為何需要任務調度?

在web應用中,大多數任務是以一種"防止用戶長時間等待"的方式完成的。在Google搜索這樣的例子中,減少等待時間對用戶體驗來說至關重要。異步任務的一種解決方案是在用戶提交后生成一個線程(來處理異步任務),但這也不能解決那些需要以一定時間間隔重復運行任務、或在天天的指定時間運行任務的情況。

讓我們從一個數據庫報表的例子來看看任務調度能如何幫助改善系統設計。報表可能是錯綜復雜的,這取決于用戶所需數據的種類,以及是否需要從一個或多個數據庫收集大量數據。用戶可能需要很長時間來運行這樣的"按需"報表。因此,我們向這個報表示例中添加任務調度機制,以便用戶可以安排在任何他們需要的時間生成報表,并以PDF或其他格式在email中發送。用戶可以讓報表在天天的凌晨2:22,系統正處于低負荷時運行;也可以選擇只在特定時間運行一次。通過在報表應用中加入任務調度,我們可以為產品添加一項有用的功能,并改善用戶體驗。

幸運的是,有一個強大的開源解決方案可以讓我們以標準的方式在web應用(或任何Java應用)中實施任務調度。以下示例展示了在web應用中,如何使用Quartz來創建一個任務調度框架。這個示例還使用了Struts Action framework 插件,以便在web應用啟動時初始化任務調度機制。Struts是最常見的MVC框架,為大多數開發人員所熟悉。當然除此之外還有許多框架可以協助在web應用中實現MVC模式。

啟動時初始化任務調度器

我們首先要做的是建立一個Struts插件,讓它在容器啟動時創建我們的任務調度器。在以下例子中,我們選擇Tomcat作為web應用容器,不過這些示例在其他容器中也應當可以運行。我們要創建一個Struts插件類,并在struts-config.xml中加入幾行代碼以使之可以工作。

這個插件有兩個可配置的初始化參數:startOnLoad指定是否要在容器啟動時立即啟動任務調度器,而 startupDelay指定啟動任務調度器之前的等待時間。啟動延時很有用,因為我們可能需要首先執行一些更重要的初始化步驟。此外還可以使用listener機制,以更復雜的方式來通知SchedulerPlugIn何時啟動Quartz Scheduler。 <PLUG-IN className="SchedulerPlugIn">


<SET-PROPERTY property="startOnLoad" value="false" />


<SET-PROPERTY property="startupDelay" value="0" />


</PLUG-IN>

我們要創建的是一個實現Struts插件接口org.apache.struts.action.PlugIn的單子類SchedulerPlugIn。Struts會按照配置文件中出現的順序初始化各個插件。要非凡注重的是init()方法中的代碼,在此我們初始化了所需的Quartz對象,并得到Scheduler。我們的任務信息就要提交到此org.quartz.Scheduler對象,后者將在隨后討論。Scheduler對象由Quartz servlet根據其配置初始化,就像Struts初始化它的ActionServlet類一樣。讓我們來看init()方法:

public void init(ActionServlet actionServlet,
ModuleConfig moduleConfig) {

System.out.println("Initializing Scheduler PlugIn for Jobs!");
// Retrieve the ServletContext
// 獲取ServletContext
ServletContext ctx = actionServlet.getServletContext();
// The Quartz Scheduler
// Quartz Scheduler對象
Scheduler scheduler = null;

// Retrieve the factory from the ServletContext.
// It will be put there by the Quartz Servlet
// 從ServletContext取得由Quartz Servlet放置在此的factory對象。
StdSchedulerFactory factory = (StdSchedulerFactory)
ctx.getAttribute(QuartzInitializerServlet.QUARTZ_FACTORY_KEY);

try{
// Retrieve the scheduler from the factory
// 從factory取得scheduler
scheduler = factory.getScheduler();

// Start the scheduler in case, it isn't started yet
// 假如scheduler尚未啟動,則啟動它
if (m_startOnLoad != null &&
m_startOnLoad.equals(Boolean.TRUE.toString())){
System.out.println("Scheduler Will start in " +
m_startupDelayString + " milliseconds!");
//wait the specified amount of time before
// starting the process.
// 在啟動之前等待指定長度的時間
Thread delayedScheduler =
new Thread(new DelayedSchedulerStarted (
scheduler, m_startupDelay));
//give the scheduler a name. All good code needs a name
//給任務調度器命名。好的代碼總該有名字!
delayedScheduler.setName("Delayed_Scheduler");
//Start out scheduler
//啟動任務調度器
delayedScheduler.start();
}
} catch (Exception e){
e.printStackTrace();
}
sm_scheduler = scheduler;
}



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品亚洲国产成av人片传媒| 亚洲免费av片| 亚洲国产天堂网精品网站| 久久福利视频网| 欧美第一页在线| 欧美精品免费看| 欧美人交a欧美精品| 爱福利视频一区| 永久555www成人免费| 国产欧美日韩专区发布| 亚洲二区在线播放视频| 97在线精品视频| 国产第一区电影| 福利一区视频在线观看| 国产精品av在线| 亚洲欧洲视频在线| 亚洲色无码播放| 狠狠躁18三区二区一区| 亚洲性av在线| 一本色道久久88精品综合| 波霸ol色综合久久| 国产精品十八以下禁看| 日韩在线www| 亚洲精品美女在线| 成人黄色短视频在线观看| 久久午夜a级毛片| 色综合久综合久久综合久鬼88| 欧美丰满少妇xxxxx做受| 久久影视电视剧免费网站| 欧美国产日韩视频| 国产小视频国产精品| 国产精品丝袜一区二区三区| 欧美日韩激情美女| 国产精品www网站| 亚洲女人天堂视频| 亚洲精品99999| 7m第一福利500精品视频| 国产亚洲免费的视频看| 国产精品爽爽ⅴa在线观看| 日韩中文字幕在线| 久久6免费高清热精品| 久久婷婷国产麻豆91天堂| 国产成人精品在线视频| 国产做受69高潮| 在线视频免费一区二区| 日本午夜精品理论片a级appf发布| 欧洲亚洲妇女av| 日韩欧亚中文在线| 欧美在线激情视频| 日韩一区在线视频| 亚洲女人被黑人巨大进入| 精品视频www| 黑人欧美xxxx| 久久av红桃一区二区小说| 国产精品视频26uuu| 狠狠躁夜夜躁人人爽超碰91| 日韩激情av在线播放| 97视频色精品| 日韩的一区二区| 中文字幕精品www乱入免费视频| 国产精品揄拍一区二区| 亚洲成**性毛茸茸| 精品国产欧美一区二区三区成人| 欧美亚洲日本网站| 国内外成人免费激情在线视频网站| 亚洲欧美日韩一区二区三区在线| 国产精品视频网站| 狠狠做深爱婷婷久久综合一区| 国产精品27p| 久热精品在线视频| 精品国内产的精品视频在线观看| 亚洲一区999| 亚洲第一偷拍网| 国产精品 欧美在线| 91精品综合视频| 亚洲国产精彩中文乱码av在线播放| 欧洲s码亚洲m码精品一区| 欧美成人一二三| 日本高清+成人网在线观看| 一区三区二区视频| 欧美电影免费观看| 日韩激情片免费| 亚洲深夜福利网站| 久久亚洲欧美日韩精品专区| 91日本在线观看| 精品视频9999| 51ⅴ精品国产91久久久久久| 成人在线播放av| 欧美激情一二三| 亚洲欧美国产另类| 亚洲free性xxxx护士白浆| 国产精品久久久久久久久影视| 午夜精品久久久久久久99热浪潮| 国产精品久久综合av爱欲tv| 精品亚洲夜色av98在线观看| 亚洲亚裔videos黑人hd| 亚洲精品综合精品自拍| 91亚洲人电影| 日本精品性网站在线观看| 精品视频在线播放| 欧美片一区二区三区| 欧美精品在线免费播放| 欧美精品在线观看| 亚洲电影免费观看高清完整版| 成人免费淫片视频软件| 亚洲一区二区三区香蕉| 欧美黑人狂野猛交老妇| 日韩av成人在线| 日韩精品极品在线观看| 久久中文字幕在线| 国产精品99久久久久久白浆小说| 国产精品久久久久av免费| 91精品国产91久久久久久吃药| 日韩精品视频在线观看免费| 欧美大码xxxx| 日韩电视剧免费观看网站| 亚洲香蕉成人av网站在线观看| 亚洲欧美另类国产| 久久综合久中文字幕青草| 高清欧美性猛交xxxx黑人猛交| 亚洲国产小视频| 亚洲第一区中文字幕| 亚洲精品短视频| 久久成人免费视频| 亚洲少妇激情视频| 国产a∨精品一区二区三区不卡| xvideos亚洲| 久久资源免费视频| 欧美激情亚洲综合一区| 美女久久久久久久久久久| 尤物精品国产第一福利三区| 国产精品夜色7777狼人| 91精品久久久久久久久青青| 久久精品视频va| 日韩动漫免费观看电视剧高清| 欧美日产国产成人免费图片| 91在线色戒在线| 少妇精69xxtheporn| 精品国产91乱高清在线观看| 欧美国产日韩二区| 久久久久亚洲精品成人网小说| 亚洲黄色在线看| 国产精品青青在线观看爽香蕉| 欧美老女人在线视频| 久久中文字幕一区| 久久99国产综合精品女同| 亚洲风情亚aⅴ在线发布| 亚洲奶大毛多的老太婆| 91精品国产高清久久久久久久久| 在线视频精品一| 97热在线精品视频在线观看| 亚洲欧美国产一本综合首页| 日韩精品福利网站| 欧美视频在线免费看| 亚洲黄色av女优在线观看| 欧美最猛性xxxxx(亚洲精品)| 国产精品www色诱视频| 中文字幕视频在线免费欧美日韩综合在线看| 欧美在线中文字幕| 91视频国产一区| 久久久影视精品| 欧美小视频在线观看| 91精品91久久久久久| 欧美黑人国产人伦爽爽爽|