gpt4 book ai didi

ejb - EJB3 和 JNDI 查找中的 SessionContext.getBusinessObject()

转载 作者:行者123 更新时间:2023-12-05 01:38:11 27 4
gpt4 key购买 nike

EJB2 ,当调用另一个(本地/远程)bean 时,需要在 EJB 中使用 getEJBBusinessObject() 方法来传递对自身的引用。

是否同样适用于 EJB3 ?

例如

@Stateless 
public class MyBean implements MyBeanLocal {

@Resource private SessionContext sessionContext;

public void myMethod() {
OtherBeanLocal otherBean = ...; // getting reference to other local EJB.
MyBeanLocal myBean = sessionContext.getBusinessObject(MyBeanLocal.class);
b.aMethod(myBean);
}

// Edit: calling myMethodTwo() from inside of myMethodOne()
public void myMethodOne() {
MyBeanLocal myBean = sessionContext.getBusinessObject(MyBeanLocal.class);
myBean.myMethodTwo();
}

public void myMethodTwo() {
...
}
...
}

另外,如果我使用 getBusinessObject() 方法获取我的本地 bean,它是否与使用通用 JNDI 查找相同?

我已经测试了这两种方法,并且都可以工作,但是我不确定容器是否以相同的方式处理 bean 对象。

编辑 :
在 EJB3 中,从同一个 ejb 的 myMethodOne() 内部调用 myMethodTwo() 时,是否仍然需要获取对 ejb 本身的引用?是否允许通过 调用同一个 ejb 中的方法?此 引用?
如果我决定使用一些,这将如何处理交易?

最佳答案

是的,这同样适用于 EJB 3。是的,getBusinessObject 是与 getEJBObject(或 getEJBLocalObject)类似的 EJB 3。所有这些方法都返回当前 bean 对象的代理。对于无状态 session bean,这与通过 JNDI 查找基本相同,尽管它的性能可能更好,因为它避免了 JNDI 开销。

关于ejb - EJB3 和 JNDI 查找中的 SessionContext.getBusinessObject(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569648/

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