繁体   English   中英

使EntityManager可序列化

[英]Make EntityManager serializable

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

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

并且可以从我的Web应用程序正常运行。 我现在正在开发使用相同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 Kepler,GF4,MySql 5.5.31,EclipseLink 2.5

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM