0

如果我的理解正確,那麼容器不會併發調用SLSB。調用序列化或創建新的SLSB實例。我的問題是:併發訪問來自Singleton的無狀態Sessionbean

從具有ConcurrencyManagement.BEAN的併發調用可能發生的單一體訪問SLSB是否安全?

如果它是安全的,在SLSB中使用entitymanager實例也是安全的,因爲entitymanager不是線程安全的,並且如果SLSB實例在不同線程之間共享,entitymanager也在線程之間共享。

在此先感謝!

回答

1

是的,對於這兩個問題,這是安全的。 一次會話bean,無狀態或有狀態一次只能由一個線程使用。

從EJB 3.1規範:

容器必須確保只有一個線程可以在任何時間執行無狀態或有狀態會話bean 實例。

http://download.oracle.com/otndocs/jcp/ejb-3.1-pfd-oth-JSpec/

如果2個併發呼叫來自你單身,這將SLSB 2種不同的情況下提供服務。