簡體   English   中英

為什么無狀態會話bean是單線程的?

[英]Why stateless session beans are single threaded?

根據我的理解,無狀態會話bean用於編寫業務邏輯。 它們無法在實例變量中存儲數據,因為它們的實例由多個請求共享。 所以他們似乎更像是單身人士課程。 但是,區別在於包含為每個請求創建(或從池中重用)無狀態會話Bean的單獨實例。

谷歌搜索后,我可以找到Java EE規范說他們認為是單線程的原因。 但我無法理解為什么指定為單線程

由於TX Context,SLSB是單線程的,Principal在調用時與bean實例相關聯。 這些bean是合並的,除非達到最大池大小在單獨的線程中處理(依賴於供應商)。

如果SLSB設計為線程安全,則每個調用看起來都像servlet doGet / Post,其請求信息包含Tx上下文,安全上下文信息等。因此,至少代碼看起來很干凈(取決於開發人員)。

無狀態會話bean是單線程的主要原因是使它們對容器具有高度可伸縮性。 容器可以對運行時環境做出許多簡化的假設。 第二個原因是讓開發人員的生活更輕松,因為開發人員不必擔心他的業務邏輯中的任何同步或重新進入,因為bean永遠不會在另一個線程上下文中調用。

我記得原始EJB 1.0規范的評論中討論的原因。 我會看一下規范的目標部分。 有關規范列表,請參見http://java.sun.com/products/ejb/docs.html

暫無
暫無

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

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