我有一个包含对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
答案 0 :(得分:0)
您无法序列化PersistenceContext
。这意味着您可以将MazeBean
发送到另一台计算机并访问同一数据库。但是,由于EntityManager
是一个接口,您可以自己实现它并使该实现可序列化。然后,所有呼叫都将委派给实际的EntityManager
。但是,您可能只是重新设计MazeBean
而不是最有可能的清洁解决方案。