Можно ли вызвать транзакционный метод из самого Stateful EJB?Чтобы говорить более четко:
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
@Stateless
public class MyService {
@Resource
SessionContext ctx;
public void myMethod() {
// do something...
// invoke method from the same class
// As expected - this doesn't work as it's a regular local-call,
// it's not aware of EJB nature of this call.
save();
// Doesn't work (although it worked with SLSB)
ctx.getBusinessObject(MyService.class).save();
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void save() {
// do something...
}
}
Теперь я хочу, чтобы пользователь вызвал myMethod ();Я хочу быть уверен, что этот метод выполняется без транзакции JTA.После этого вызова я хочу вызвать save ();метод, который будет выполняться в транзакции.
Если я использую метод ctx.getBusinessObject (-), я получаю:
ПРЕДУПРЕЖДЕНИЕ: системное исключение произошло во время вызова EJB MyServiceметод public void com.test.MyService.save () javax.ejb.IllegalLoopbackException: Незаконный повторный доступ : Попытка сделать возврат по петле для метода publicсессионный компонент MyService
Внутренние вызовы не поддерживаются для SFSB?
Я использую Glassfish 3.1.1.