2016-03-05 97 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。 :)