java - 使 EntityManager 可序列化

标签 java eclipse serialization glassfish

我有一个包含对 EntityManager 的引用的 JavaBean:

@Stateless(name = "mazeBean", mappedName = "mazes")
@Remote @Local
public class MazeBean
{
    @PersistenceContext(unitName = "mazeEJB")
    private EntityManager em;

并且它在我的网络应用程序中运行良好。我现在正在开发一个使用相同 Bean 的 ApplicationClient 项目,但出现错误:

Caused by: org.omg.CORBA.BAD_PARAM: ----------BEGIN server-side stack trace----------
org.omg.CORBA.BAD_PARAM: WARNING: 00100006: Class beans.__EJB31_Generated__MazeBean__Intf____Bean__ is not Serializable  vmcid: SUN  minor code: 6 completed: Maybe

我对此进行了一些研究,我发现的信息是 EntityManager 可能是序列化问题的原因。 EntityManager 是该类中唯一的属性。我发现所有属性都需要可序列化,而 EntityManager 则不需要。我确实在 Bean 中创建了其他方法本地对象,但在出现此错误时我还没有调用它们中的任何一个,并且我希望它们无论如何都会构建在客户端上。

首先;我的诊断正确吗?如果是这样我该如何解决它?

Eclipse 开普勒、GF4、MySql 5.5.31、EclipseLink 2.5

最佳答案

您无法序列化您的PersistenceContext。这意味着您可以将您的 MazeBean 发送到另一台计算机并访问同一数据库。但是,由于 EntityManager 是一个接口(interface),您可以自己实现它并使该实现可序列化。然后,所有调用都将委托(delegate)给实际的 EntityManager。但是,您可能只是重新设计您的 MazeBean,而不是最有可能更干净的解决方案。

关于java - 使 EntityManager 可序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21512902/

相关文章:

android - 错误 : "Adb connection Error:An existing connection was forcibly closed by the remote host"

java - Eclipse:在调试 Java EE 时不显示变量

c# - 数据库形状列表

http - 使用 Protobufs 的批处理技术

java - 在 Spring 配置中使用时间戳

java - 无法始终为连接 URL 'null 创建类 '' 的 JDBC 驱动程序

java - 哪个工具/插件可用于在尽可能短的时间内从远程位置复制文件?

Java 序列化(X509CertificateObject 的)

java - 如何隐藏 h :outputLink conditionally?

java - 多线程和 Swing