簡體   English   中英

JAX-WS Web服務線程模型

[英]JAX-WS web services threading model

(1)好的,我對JAX-WS Java Web服務的線程模型非常困惑。 我讀過它們不是線程安全的。 他們應該如何服務多個並行請求呢? 鑒於它總是已知(大部分),它們將同時從多個客戶端調用。

(2)app服務器是否為每個請求創建一個新的Web服務實例(就像它維護一個無狀態會話bean池,為一個請求分配一個,一旦請求完成,它就返回到池中)。 您可以在應用服務器控制台(GlassFish或JBoss或WebSphere)中配置該池大小。

(3)我還在這里發現了@Threadsope注釋,它為每個請求創建了新的線程。
http://jax-ws-commons.java.net/thread-scope/
這是一個不錯的選擇嗎? 我相信人們正在以其他標准方式解決線程安全和並行請求問題 - 請提供建議。

應用程序服務器包含一個bean池。
使用無狀態會話bean時,無法保證在使用會話時獲得相同的實例。
但是,正如我所提到的那樣,bean由一個池管理,在其中保存一個狀態,這是一個壞主意。
但是,我不認為EJB bean與您的需求有任何關系。
請注意,在您提供的示例中,每個請求都會創建DataService和連接。 這有點貴。
我會考慮僅將ThreadLocal API用於連接,並從連接池獲取它。
您可以通過閱讀ThreadLocal和閱讀有關數據庫連接池的信息來實現這些功能


總而言之 - 我不認為EJB在這里是相關的。
不要將服務類和字段保存在本地線程中,而只保留每個請求將分配的必要字段。 (在你展示的例子中 - 這是連接)

暫無
暫無

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

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