3

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

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

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

4

1 回答 1

1

注意: 我是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 提供程序:

于 2012-12-05T15:22:52.147 回答