Я использую Java EE 6 с Glassfish 3.1.2.2. У меня есть проект EJB с сессионными компонентами без состояния и WEB-проект с именованными, сессионными классами.
Например:
Именованный класс
@Named
@SessionScoped
public class MyWebController implements Serializable {
@EJB
private MyBean myBean;
}
Класс EJB
@Stateless
public class MyBean {
@PersistenceContext
private EntityManager em;
}
Проект запущен, но когда я делаю анализ кода, я получаю следующее сообщение.
Непрерывное несериализуемое поле экземпляра в сериализованном классе
Этот класс Serializable определяет не примитивное поле экземпляра, которое не является временным, Serializable или java.lang.Object и не реализует интерфейс Externalizable или методы readObject() и writeObject(). Объекты этого класса не будут десериализованы правильно, если в этом поле хранится объект без Serializable.
Кто-нибудь знает, кто может мне реорганизовать мой код, чтобы этого избежать?
Не эксперт по этим темам, но попробуйте это:
1) Убедитесь, что вы используете правильную аннотацию @SessionScoped
:
@Named
@javax.enterprise.context.SessionScoped
public class MyWebController implements Serializable {
@EJB
private MyBean myBean;
}
2) Попробуйте также с сериализуемым EJB:
@Stateless
public class MyBean implements Serializable {
...
}
3) Если это решение сломается. Попробуйте с @Inject
вместо @EJB