【发布时间】:2011-11-26 01:06:53
【问题描述】:
在 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 本身的引用?是否允许通过 this 引用调用同一个 ejb 中的方法? 如果我决定使用一些,这将如何处理交易?
【问题讨论】: