gpt4 book ai didi

java - 引用 EJB 的命名类的序列化,该类保存实体管理器

转载 作者:太空宇宙 更新时间:2023-11-04 14:43:58 26 4
gpt4 key购买 nike

我将 Java EE 6 与 Glassfish 3.1.2.2 结合使用。我有一个带有无状态 session bean 的 EJB 项目和一个带有命名 session 范围类的 WEB 项目。

例如:

命名类

@Named
@SessionScoped
public class MyWebController implements Serializable {

@EJB
private MyBean myBean;
}

EJB 类

@Stateless
public class MyBean {

@PersistenceContext
private EntityManager em;
}

项目正在运行,但是当我进行代码分析时,我收到以下消息。

Non-transient non-serializable instance field in serializable class

此 Serialized 类定义了一个非原始实例字段,它既不是 transient 的、Serialized 的也不是 java.lang.Object,并且似乎没有实现Externalized 接口(interface)或 readObject() 和 writeObject() 方法。如果此字段中存储了不可序列化的对象,则此类对象将无法正确反序列化。

有人知道,我可以重构我的代码来避免这种情况吗?

最佳答案

不是这些主题的专家,但尝试一下这个:

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

关于java - 引用 EJB 的命名类的序列化,该类保存实体管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24648043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com