Jpa EclipseLink在远程EJB调用时反序列化空实体对象
我使用的是当前版本的GlassFish 4.1,包括EclipseLink版本2.5.2。 在GlassFish上,我部署了一个企业应用程序和一个web应用程序。 如果从GlassFish外部调用返回加载实体的EJB(如外部JavaFX应用程序),则该实体将正确返回 但是,如果从web应用程序调用相同的EJB,则由于此错误,实体不会正确返回 我在这里已经找到的解决方法并不能真正解决这个问题,因为如果我在EclipseLink中禁用编织,以下操作将无法正常工作:Jpa EclipseLink在远程EJB调用时反序列化空实体对象,jpa,glassfish,eclipselink,jpa-2.1,glassfish-4.1,Jpa,Glassfish,Eclipselink,Jpa 2.1,Glassfish 4.1,我使用的是当前版本的GlassFish 4.1,包括EclipseLink版本2.5.2。 在GlassFish上,我部署了一个企业应用程序和一个web应用程序。 如果从GlassFish外部调用返回加载实体的EJB(如外部JavaFX应用程序),则该实体将正确返回 但是,如果从web应用程序调用相同的EJB,则由于此错误,实体不会正确返回 我在这里已经找到的解决方法并不能真正解决这个问题,因为如果我在EclipseLink中禁用编织,以下操作将无法正常工作: @ManyToOne(fetch=
@ManyToOne(fetch=FetchType.LAZY)
公共Foo getFoo(){
返回foo;
}
@manytone(fetch=FetchType.EAGER)
公共酒吧{
返回杆;
}
您可以尝试另一种解决方法
字节码编织是一种改变数据字节码的技术
编译的Java类。您可以配置字节码编织以启用
EclipseLink JPA性能优化的数量,包括支持
对于一对一和多对一关系的延迟加载,
属性级别更改跟踪和获取组
可以在创建实体类时动态执行编织
加载,或作为构建过程的一部分静态加载
()
如中所建议的,您可以尝试。关于静态编织和插件使用的详细说明(您也可以使用ant)可以在中找到
然后必须在persistence.xml中设置此属性:
<property name="eclipselink.weaving" value="static"/>
另请参见:
感谢您的快速回答。我使用ant任务尝试了静态编织。但是返回的实体仍然是空的。我认为使用ant或maven进行静态编织应该没有区别,因为它们都使用相同的eclipselink二进制文件。问题是否存在于glassfish序列化/反序列化和eclipselink字节码增强实体的组合中?