Мой сервер приложений - это WebSphere Application Server V8. У меня есть обработанный сеансом управляемый bean-компонент, в который я ввел EJB (EJB 3.0) с помощью аннотации @EJB. EJB не имеет гражданства.EJB не сериализуется в управляемом компоненте
@ManagedBean
@SessionScoped
public class MyBean extends BaseBackingBean implements
Serializable {
@EJB
private IDetails custInfo;
Я анализировал данные сессии и заметил NotSerializableException
java.io.NotSerializableException: com.ejb.EJSLocal0SLDetailsImpl_081f812d at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1537) at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1502) at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1420) at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) at
Теперь я попытался отметить EJB как преходящие и она отлично работает без бросания исключения NotSerializableException.
@EJB
private transient IDetails custInfo;
Это правильная реализация или альтернативное решение?
Я упомянул Should EJBs be instance variables and marked as transient in JSF Managed Beans?, где указано, что маркировка EJB в качестве переходного процесса не требуется; то что может быть не так?
Какой контейнер вы используете? – BalusC
Являются ли методы EJB возвращаемыми типами и аргументами сериализуемыми. –
@NayanWadekar: А? Как именно это может вызвать эту проблему? – BalusC