使EntityManager可序列化

时间:2014-02-02 16:19:45

标签: java eclipse serialization glassfish

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

@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

1 个答案:

答案 0 :(得分:0)

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