[英]using threads in servlets
我很困惑是否應該在servlet中創建自己的線程,因為它們在內部具有線程機制? 如果是,我們如何確定程序線程是否安全? 如何在servlet中實現線程安全機制。
我也有類似的擔憂。
僅EJB
規范不允許從應用程序創建線程。
可以從Servlet啟動線程。
我已經做過很多次了,沒有任何問題,但是老實說,我不確定100%:
要么
但是在Tomcat中,從servlet啟動線程從來沒有問題。
您可以像在每個多線程程序中一樣,使它成為線程安全的。
您將使用Java提供的所有可用結構進行同步。
根據您在注釋中的內容,我了解到您有一組線程可以連續監視日志文件,並在日志中發現有問題時發送電子郵件。
第一個問題:為什么這是一個servlet? 是否有網絡GUI? 這是做什么用的?
對於日志掃描部分,我將其實現為servlet容器之外的單獨過程。 對於此過程發現的所有需要發送到某個地方的東西,我都會向JMS隊列中添加一條消息。 然后,我將創建一個消息驅動的bean,以接收來自此隊列的消息並將其作為電子郵件發送。 (這確實是一個集成問題,要將消息從JMS轉換為電子郵件,您可能需要研究像Mule這樣的解決方案)。
至於如何將此與您的servlet集成,除了掃描日志外,還取決於您的servlet所做的工作(我想它為用戶提供了某種界面)
通過這種設計,您可以選擇將來重新編寫生成日志的程序。 除了讓一個程序編寫日志並由另一個程序解析日志外,第一個程序還可以將中斷消息直接放在JMS隊列上。 換句話說,您將來可以更改體系結構的日志生成部分,而不必重新編寫郵件發送部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.