9

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

是否可以生成没有 @XmlSeeAlso 注释的类?解组到子类的实际工作似乎发生在 ObjectFactory 类中。是否可以省略 jaxb 绑定,并为每个应用程序替换自定义 ObjectFactory?这将允许我在共享实用程序中自动生成 Web 服务类型,而每个 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 注释的行为。

4

1 回答 1

3

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

于 2012-07-17T22:59:49.867 回答