我正在使用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>
这个绑定将在ObjectFactory中创建一个方法,它似乎可以解组到我的子类的实际工作:
public AutogeneratedWebserviceType createAutogeneratedWebserviceType() {
return new CustomSubclass();
}
如果可能的话,我希望通过提供客户ObjectFactory而不使用@XmlSeeAlso注释来实现此行为。
答案 0 :(得分:2)
您是否尝试使用参数-target 2.0运行XJC?我相信这会禁用@XmlSeeAlso注释的生成。