0

经过数小时的尝试和错误,我想在这里询问是否有人可以帮助我解决我的问题。

设想:

  • 使用 Apache CXF 作为 JAX-WS 实现的 Java EE 服务器 (JBoss 7.2)。
  • ServiceA(服务端点)和 ServiceB(扩展服务 A 和服务端点)
  • 三个持久化项目:Common,PersistenceA 依赖于 Common,PersistenceB 依赖于 PersistenceA。
  • 有一个类UUIDIdentified是所有持久性类的超类(它提供 JPA @ID)它在 Projekt Common

ServiceA 类中有一个方法:public List<DTO> getData(UUIDIdentified value);

Server读取一些Objects,这些Objects都是UUIDIdentified的子类型,目的是将Objects打包到DTO中。

DTO 看起来像:

@XmlAccessorType(XmlAccessType.FIELD)
public class DTO{

private static final long serialVersionUID = 1L;

@XmlElement(name = "uuididentified")
UUIDIdentified object;

public UUIDIdentified getObject() {
    return object;
}

public void setObject(final UUIDIdentified object) {
    this.object = object;
}
}

<uuididentified>如果我查看 SOAP 响应,我发现标签中没有数据。我对 JAXB 的理解不是很好,但是据我了解,UUIDIdentified 的“真实”实例及其类型对于 JAXBContext 是未知的。

我可以通过添加@XmlSeeAlso({TypeA.class,TypeB.class})UUIDIdentified课程中来解决这个问题(我认为)。但那是我不能这样做的,因为如果我这样做,Project Common 将取决于 Projects PersistenceA/B。

我该如何解决这个问题。我如何对 JAXB(可能在 xml 配置文件中)说它必须在添加 UUIDIdentified 时将 ClassA/B 添加到 JAXBContext?

我在 SEI 上尝试了一些类似 jaxb.in​​dex 文件、ObjectFactorys、@XmlSeeAlso 的东西,但我不知道这是否是正确的方法。

4

1 回答 1

0

在我尝试自己编组/解组对象之后,@XmlJavaTypeAdapter我遇到了问题的根源。这与 JAXBContect 无关。问题是我的对象是一个 Hibernate-Envers 读取对象,并且 envers 产生代理对象(即使它们是 EAGER)。

因此编组器无法从 Proxy 对象中提取实际值。

于 2015-03-21T09:06:55.730 回答