在EJB2中,需要在EJB中使用getEJBBusinessObject()方法在调用另一个(本地/远程)bean时将引用传递给它自己.
这同样适用于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() {
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
另外,如果我使用getBusinessObject()方法获取本地bean ,它是否与使用常见的JNDI查找相同?
我已经测试了这两种方法,并且两者都有效,但我不确定容器是否以相同的方式处理bean对象.
编辑:当从EJB3中的同一ejb的myMethodOne()内部调用myMethodTwo()时,仍然需要获取对ejb本身的引用吗?是否允许通过此引用调用同一ejb中的方法?如果我决定使用某些交易,这将如何处理交易?
是的,这同样适用于EJB 3.是的,getBusinessObject是getEJBObject(或getEJBLocalObject)的EJB 3模拟.所有这些方法都返回当前bean对象的代理.对于无状态会话bean,这与通过JNDI查找基本相同,尽管它可能会更好地执行,因为它可以避免JNDI开销.
| 归档时间: |
|
| 查看次数: |
4471 次 |
| 最近记录: |