【发布时间】:2015-03-19 07:34:01
【问题描述】:
经过数小时的尝试和错误,我想在这里询问是否有人可以帮助我解决我的问题。
场景:
- 使用 Apache CXF 作为 JAX-WS 实现的 Java EE 服务器 (JBoss 7.2)。
- ServiceA(服务端点)和 ServiceB(扩展服务 A 和服务端点)
- 三个持久性项目:Common,PersistenceA 依赖于 Common,PersistenceB 依赖于 PersistenceA。
- 在 Projekt Common 中有一个类
UUIDIdentified是所有持久类的超类(它提供 JPA@ID)
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;
}
}
如果我查看 SOAP 响应,我发现 <uuididentified> 标记中没有数据。我对 JAXB 的理解不是很好,但据我了解,UUIDIdentified 的“真实”实例及其类型对于 JAXBContext 是未知的。
我可以通过将@XmlSeeAlso({TypeA.class,TypeB.class}) 添加到UUIDIdentified 类来解决这个问题(我认为)。但这是我做不到的,因为如果我这样做,Project Common 将取决于 Projects PersistenceA/B。
我该如何解决这个问题。我如何对 JAXB(可能在 xml 配置文件中)说它必须在添加 UUIDIdentified 时将 ClassA/B 添加到 JAXBContext?
我在 SEI 上尝试了一些东西,例如 jaxb.index 文件、ObjectFactorys、@XmlSeeAlso,但我不知道这是否是正确的方法。
【问题讨论】:
标签: inheritance jboss jaxb cxf data-transfer-objects