Я пытаюсь сохранить удаленный дескриптор в компоненте Stateful EJB3.0.Интерфейс этого bean-компонента определен:
@Remote
public interface Hello extends Serializable {
Handle getHandle();
void sayHello();
}
Реализация:
@Stateful
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class HelloBean implements Hello {
@Resource
private SessionContext ctx;
@Override
public Handle getHandle() {
try {
return ctx.getEJBObject().getHandle();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public Handle sayHello() {
System.out.println("hello");
}
}
В соответствии со спецификацией EJB, это должно схватить меня за сериализуемый дескриптор.Но вместо этого я получаю:
Caused by: java.lang.IllegalStateException: EJBObject not available
at com.sun.ejb.containers.EJBContextImpl.getEJBObject(EJBContextImpl.java:328)
at com.zzz.zzz.HelloBean.getHandle(WorkHolderBean.java:125)
... 75 more
Я не уверен, что понимаю, что я сделал неправильно ... Все бины Stateful должны иметь сериализуемую ручку.Есть ли «правильный» способ получения сериализуемого дескриптора в EJB3.0?