JAXB @XmlSee также вызывает тесную связь с объектами домена.

Я использую привязки JAXB для непосредственного демаршалирования объектов доменного уровня, которые являются подклассами сгенерированных типов веб-сервисов. Это хорошее решение, так как я могу переопределить методы и обеспечить запись пользовательской логики и т. д. Однако компилятор XJC настаивает на добавлении аннотаций @XmlSeeAlso ({MySubclass.class} )ко всем сгенерированным классам, что заставляя их быть тесно связанными с объектами моего домена. Это явно нежелательно и вызывает всевозможные проблемы со ссылками между моими проектами, которые я не буду здесь рассматривать.

Можно ли создавать классы без аннотации @XmlSeeAlso? Фактическая работа по демаршалингу в подкласс, по-видимому, происходит в классе ObjectFactory. Можно ли опустить привязку jaxb и заменить пользовательскую ObjectFactory для каждого приложения? Это позволило бы мне иметь автоматически сгенерированные типы веб-сервисов в общей утилите, в то время как каждый веб-проект мог бы разгружаться на разные подклассы этих типов.

<jaxb:bindings node="//xs:complexType[@name='AutogeneratedWebserviceType']">
  <jaxb:class implClass="my.project.CustomSubclass" />
</jaxb:bindings>

Эта привязка создаст метод в ObjectFactory, который, по-видимому, будет выполнять реальную работу по демаршалингу моего подкласса.:

public AutogeneratedWebserviceType createAutogeneratedWebserviceType() {
  return new CustomSubclass();
}

Я хочу, чтобы такое поведение выполнялось без аннотации @XmlSeeAlso, если возможно, с предоставлением клиентской ObjectFactory.

9
задан user1234057 5 May 2012 в 02:00
поделиться