簡體   English   中英

Java EE應用程序中的線程

[英]Threads in a Java EE application

我有一個Java EE應用程序,它有兩個組件:第一個是從Internet上抓取一些信息並將其填入數據庫的服務。 其次是用戶可以瀏覽該信息的Web界面(部署在tomcat上)。

什么是實施第一個組件的最佳方法? 它應該作為后台守護程序/服務或容器內的線程運行嗎?

我個人將他們分成不同的過程。 除了其他任何東西,它意味着你可以重新啟動一個而不用擔心另一個。 這也意味着您可以輕松地將它們部署在不同的計算機上,而無需為實際不需要Web界面的服務安裝Tomcat。

根據應用程序框架的類型,Spring允許您使用Quartzjava.util.concurrent框架。 Spring有一個TaskExecutor抽象(參見Spring 文檔 ),它簡化了很多這個,但要檢查哪個最適合你的設計。

Spring或Quartz(由Spring管理)然后控制線程或執行器或作業的創建和啟動/停止,以及它們的頻率/周期和其他調度參數,還管理您可能需要的任何作業池。

我將這些用於我編寫的任何Java EE應用程序中的所有后台任務和批處理作業都沒有問題。 由於這些作業是Spring管理的POJO,因此它們可以訪問Spring所需的完整依賴注入框架等,當然,您可以根據需求的變化或擴展,通過對應用程序配置XML文件的簡單更改來切換調度程序框架。 。

在Web容器中使用后台作業沒有任何問題,但您必須讓Web容器知道它,以便可以正常停止和啟動它。

查看web.xml中的load-on-startup標記。 http://wiki.metawerx.net/wiki/Web.xml.LoadOnStartup上有一些建議

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM