JAXB @XmlSee也导致与域对象的紧密耦合

use*_*057 9 java web-services cxf jax-ws jaxb

我正在使用JAXB绑定直接解组到我的域层对象,这些对象是生成的Web服务类型的子类.这是一个很好的解决方案,因为我可以覆盖方法并提供写自定义逻辑等.但是,XJC编译器坚持在所有生成的类上放置@XmlSeeAlso({MySubclass.class})注释,这导致它们成为紧密耦合到我的域对象.这显然是不可取的,并导致我的项目之间的各种参考问题,我将不会在这里.

是否可以生成没有@XmlSeeAlso注释的类?解组到子类的实际工作似乎发生在ObjectFactory类中.是否可以省略jaxb绑定,并为每个应用程序替换自定义ObjectFactory?这将允许我在共享的util中具有自动生成的webservice类型,而每个web项目可以解组为这些类型的不同子类.

<jaxb:bindings node="//xs:complexType[@name='AutogeneratedWebserviceType']">
  <jaxb:class implClass="my.project.CustomSubclass" />
</jaxb:bindings>
Run Code Online (Sandbox Code Playgroud)

这个绑定将在ObjectFactory中创建一个方法,它似乎可以对我的子类进行解组的实际工作:

public AutogeneratedWebserviceType createAutogeneratedWebserviceType() {
  return new CustomSubclass();
}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,通过提供客户ObjectFactory,我想要没有@XmlSeeAlso注释的这种行为.

Jam*_*esB 3

您是否尝试使用参数 -target 2.0 运行 XJC?我相信这将禁用 @XmlSeeAlso 注释的生成。