<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    CONAN ZONE

    你越掙扎我就越興奮

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      0 Posts :: 282 Stories :: 0 Comments :: 0 Trackbacks
    對于Web容器來說,最忌諱應用程序私自啟動線程,自行進行線程調度,像Quartz這種在web容器內部默認就自己啟動了10個線程進行異步job調度的框架本身就是很危險的事情,很容易造成servlet線程資源回收不掉,所以我一向排斥使用quartz。

    quartz還有一個問題就是不支持cluster。導致使用quartz的應用都沒有辦法做群集。

    那么應該如何正確的使用quartz的同時,又不影響web容器自身的線程調度呢?

    辦法就是自己單獨啟動一個Job Server,來quartz跑job,不要部署在web容器中。

    其他web節點當需要啟動異步任務的時候,可以通過種種方式(DB, JMS, Web Service, etc)通知Job Server,而Job Server收到這個通知之后,把異步任務加載到自己的任務隊列中去。

    其實想改造當前已經集成quartz的web應用也不算困難:

    例如可以使用數據庫的表來記錄和維護任務隊列和狀態,把quartz部分完全從web應用中剝離出去,自己寫一個Java Main程序把配置quartz的spring容器跑起來,這樣Job Server就啟動了(注意這個Job Server完全脫離tomcat)。此外這個Main程序應該再啟動一個子線程,定期掃描數據庫的任務隊列表:
    有新的任務就加入quartz的任務調度;
    把當前任務的執行狀態寫入任務表;
    看到刪除任務的表字段狀態以后,刪除相應的任務。

    然后web應用去掉quartz部分配置,把原來的調用quartz任務的代碼改寫為讀寫數據庫的任務表,這樣就把job部分完全從web容器剝離掉了,甚至web容器做cluster也沒有問題了,并且多個web節點在同時讀寫任務表的時候,還有數據庫的事務來確保操作的一致性,實在是很棒。

    另外還可以單獨做一個job管理界面,可以通過web界面手工添加任務,查看任務狀態,刪除任務等等。
    posted on 2008-06-25 19:41 CONAN 閱讀(1181) 評論(0)  編輯  收藏 所屬分類: JAVA
    主站蜘蛛池模板: 亚洲人精品亚洲人成在线| 成人无码区免费视频观看 | 亚洲精品少妇30p| 免费无遮挡无遮羞在线看| 国产v片免费播放| 日本特黄特色AAA大片免费| 亚洲国产精品无码久久青草| 羞羞的视频在线免费观看| 免费中文字幕一级毛片| 免费国产黄网站在线看| 最新亚洲成av人免费看| a级精品九九九大片免费看| 水蜜桃亚洲一二三四在线| 国产成人精品免费视频动漫| 在线综合亚洲中文精品| 日韩在线免费播放| 日本高清免费中文在线看| 亚洲人成网站在线观看播放| 免费人成毛片动漫在线播放| 亚洲欧洲国产视频| 精品久久洲久久久久护士免费| 久久久久亚洲国产AV麻豆| 中文字幕亚洲综合久久菠萝蜜 | 亚洲a∨无码精品色午夜| 国产zzjjzzjj视频全免费| 中文字幕在线免费看线人| 久久精品国产亚洲av麻豆色欲| 182tv免费观看在线视频| 亚洲欧洲无码AV不卡在线| 亚洲午夜精品一级在线播放放| 欧洲人免费视频网站在线| 亚洲人成网站在线观看播放动漫 | sss在线观看免费高清| 亚洲av鲁丝一区二区三区| 一个人在线观看视频免费| 黄网站色视频免费观看45分钟| 亚洲av日韩av不卡在线观看| 日韩伦理片电影在线免费观看| 两个人看的www免费高清| 亚洲精品伊人久久久久| 国产亚洲精品久久久久秋霞 |