我在Glassfish 3.1.2.2中使用Java 6。我在那里有一个带有无状态会话bean的EJB项目和一个带有命名的会话作用域类的WEB项目。
例如:
命名为类
@Named
@SessionScoped
public class MyWebController implements Serializable {
@EJB
private MyBean myBean;
}EJB类
@Stateless
public class MyBean {
@PersistenceContext
private EntityManager em;
}该项目正在运行,但当我进行代码分析时,我会得到以下消息。
可序列化类中的非瞬态不可序列化实例字段
这个可序列化类定义了一个非原始实例字段,它既不是瞬态的、可序列化的,也不是java.lang.Object的,并且似乎没有实现Externalizable接口或readObject()和writeObject()方法。如果非序列化对象存储在此字段中,则该类的对象将无法正确地反序列化。
有人知道,我可以重构我的代码以避免这一点吗?
发布于 2015-05-27 07:50:35
不是这些主题的专家,但是尝试一下这个:
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
https://stackoverflow.com/questions/24648043
复制相似问题