2016-03-05 109 views
0

頭第一EJB指出,在無狀態會話bean的情況下:EJBObject在客戶端共享?

客戶不同意EJBObject,但同樣的bean可以服務多個 EJBObjects

我看不出有任何理由爲什麼單個EJBObject不能爲多個客戶端提供服務。
此外,如果哪本書狀態是正確的,什麼是我們的優勢,從彙集豆如果我們要創造每個客戶端一個EJB對象得到什麼?

回答

1

首先,人們必須明白一個EJBObject是什麼:

的EJBObject接口是由所有企業bean的遠程接口擴展。企業Bean的遠程接口提供EJB對象的遠程客戶端視圖。企業bean的遠程接口定義了可由遠程客戶端調用的業務方法。

有了這樣清除,請看下面的例子:

public class SomeClass { 

    @EJB 
    private SomeBean someBean; 
    ... 
} 

基本上,我們EJBObject無非是我們SomeClass它引用的EJB SomeBean類的屬性更多。

發生了什麼事是,上視容器的角度來看,他不是真正的創建和注入EJB SomeBean的專用實例。相反,他實例化EJB SomeBean,其存儲在他的EJB池,創建此實例的代理並在我們的SomeClass類注射代理。

因此,爲每一個客戶,你有一個EJBObject代理但是,引擎蓋下,作爲深入淺出狀態,同一個bean可以服務於多個EJBObjects

...如果我們必須爲每個客戶端創建一個EJBObject,我們從集中bean獲得的優勢是什麼?

好,例如,線程安全:如果你有SomeClass幾個實例,調用兼任someBean同樣的方法,可以保證這些電話永遠不會因爲無國籍委託給同一個實例會話實例都致力於EJB對象只爲單個方法調用的持續時間。

EJB池的其他優勢可以在this answer上找到Will Hartung。 :)