gpt4 book ai didi

java - EJBObject 在客户端之间共享?

转载 作者:行者123 更新时间:2023-12-01 10:17:21 25 4
gpt4 key购买 nike

Head First EJB 指出,在无状态 session Bean 的情况下:

Clients don't share EJBObject, but the same bean can serve multiple EJBObjects

我不明白为什么单个 EJBObject 不能为多个客户端提供服务。
此外,如果书中所述是正确的,那么如果我们必须为每个客户端创建一个 EJBObject,那么我们从池化 Bean 中获得的优势是什么?

最佳答案

首先,我们必须了解 EJBObject 是什么?是:

The EJBObject interface is extended by all enterprise beans' remote interfaces. An enterprise bean's remote interface provides the remote client view of an EJB object. An enterprise bean's remote interface defines the business methods callable by a remote client.

清除这一点后,请考虑以下本地 EJB 示例:

public class SomeClass {

@EJB
private SomeBean someBean;
...
}

基本上,我们的EJBObject只不过是我们的类SomeClass的一个属性,它引用了EJB SomeBean

所发生的情况是,从容器的角度来看,他并没有真正创建和注入(inject) EJB SomeBean 的专用实例。相反,他实例化 EJB SomeBean,将其存储在他的 EJB 池中,为此实例创建一个代理,并将代理注入(inject)到我们的类 SomeClass 中>.

因此,对于每个客户端,您都有一个 EJBObject代理,但在幕后,正如 Head First 所指出的,< em>同一个 bean 可以服务多个 EJBObjects

...what is the advantage we get from pooling beans if we have to create one EJBObject per client?

例如,线程安全:如果您有多个 SomeClass 实例,同时调用 someBean 的相同方法,那么保证这些调用永远不会委托(delegate)给同一个实例,因为无状态 session 实例仅在单个方法调用期间专用于 EJB 对象。

EJB 池的其他优点可以在 this answer 上找到。通过 Will Hartung 。 :)

关于java - EJBObject 在客户端之间共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35815648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com