Web services 使用JAXB和Eclipselink Moxy从Web服务方法返回JPA实体

Web services 使用JAXB和Eclipselink Moxy从Web服务方法返回JPA实体,web-services,jakarta-ee,jaxb,websphere,moxy,Web Services,Jakarta Ee,Jaxb,Websphere,Moxy,我正在开发一个javaee应用程序,部署在websphereapplicationserver上。在这个应用程序中,我有一个Web服务,我希望通过它将JPA实体对象作为方法调用的结果进行传输。问题来自实体关系生成的循环 我使用Eclipselink Moxy来解决JPA实体之间的反向引用问题。然而,由于我自己并没有调用JAXB实现,而是调用了自己的实现,@XmlInverseReference注释被忽略。我不想使用@XmlTransient注释,因为获取所有引用的实体作为方法结果对我来说很重要

我正在开发一个javaee应用程序,部署在websphereapplicationserver上。在这个应用程序中,我有一个Web服务,我希望通过它将JPA实体对象作为方法调用的结果进行传输。问题来自实体关系生成的循环

我使用Eclipselink Moxy来解决JPA实体之间的反向引用问题。然而,由于我自己并没有调用JAXB实现,而是调用了自己的实现,@XmlInverseReference注释被忽略。我不想使用@XmlTransient注释,因为获取所有引用的实体作为方法结果对我来说很重要


是否可以使用Moxy作为默认的webspherejaxb实现?或者,我可以为实体创建JAXB适配器,然后在运行时添加@XmlTransient注释吗?我需要这样做,因为我有方法返回引用其他实体的实体,但也返回引用的实体及其对数据库关系源的引用

注意:我是专家组的负责人和成员

JAX-WS实现中不要求它们能够在备用JAXB实现中交换。在不支持MOXy作为JAX-WS中的JAXB提供程序的环境中,一个选项是使用标准的
提供程序
机制

您可以尝试用一个技巧来取代对
@XmlInverseReference
注释的需求,即利用解组事件回调机制。这涉及在子对象上放置以下方法。在该方法的实现中,可以设置对父对象的引用

void afterUnmarshal(Unmarshaller, Object parent);
注意:您需要使用
@xmltransive
注释该属性

MOXy可以在以下环境中用作JAX-WS的JAXB提供程序:

  • 网络逻辑-
  • 玻璃鱼-

非常感谢您的回答。带有afterUnmarshal方法实现的选项对我不起作用,因为我的编组需要双向工作,从父级到子级,反之亦然,这意味着我不能在任何地方使用@XmlTransient。您能提供更多关于如何在WebSphere中安装Moxy作为JAXB提供程序的信息吗?@XmlInverseReference注释中有一个输入错误-因此不接受少于6个字符的编辑:(@JacekLaskowski-感谢您指出输入错误,它现在已经修复。