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

标签 web-services jakarta-ee jaxb websphere moxy

我正在开发要部署在 WebSphere 应用服务器上的 Java EE 应用程序。在此应用程序中,我有一个 Web 服务,我想通过它传输 JPA 实体对象作为方法调用的结果。问题来自实体关系生成的循环。

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

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

最佳答案

注意:我是 EclipseLink JAXB (MOXy) JAXB (JSR-222) 的领导和成员专家组。

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

您可以尝试替换对 @XmlInverseReference 注释的需要的一个技巧是利用解码事件回调机制。这涉及将以下方法放在子对象上。在该方法的实现中,您可以设置对父级的引用。

void afterUnmarshal(Unmarshaller, Object parent);

注意:您需要使用 @XmlTransient 注释该属性。

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

关于web-services - 使用 JAXB 和 Eclipselink Moxy 从 Web 服务方法返回 JPA 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13725580/

相关文章:

ios - 使用 SOAP 的 Swift 和 Web 服务

java jaxb 使用 jenkins Feed 对象进行解码

java - 使用 JAXB 将两个同构 XML 模式解析为一个类结构

java - 帮助在 Oracle 企业管理器中创建新的 JAXB 实例

java - 无法使用 jackson API 将 json 字符串映射到 java 对象

.net - Microsoft CRM,如何使用 CrmService 获取列表的所有成员?

ios - 关闭应用程序时如何在后台运行快速应用程序?

javascript - REST - 如何限制未授权客户端软件的访问

java - Web项目中的属性文件

java - jsp servlet嵌入jetty示例代码