В EJB2 нужно было использовать метод getEJBBusinessObject () в EJB для передачи ссылки на себя при вызове другого (локального / удаленного) bean-компонента.
То же самое относится к EJB3?
e.g.
@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 (), будет ли это то же самое, что и обычный поиск JNDI?
Я протестировал оба подхода, и оба они работают, но я не уверен, что объект bean обрабатывается контейнером одинаково.
Изменить: требуется ли получение ссылки на сам ejb при вызове myMethodTwo () из myMethodOne () того же самого ejb в EJB3? Разрешено ли вызывать методы внутри одного и того же ejb через ссылку this? Как это отразится на транзакциях, если я решу их использовать?