java - services - JAXB @XmlSeeAlso provoca un acoplamiento estrecho con objetos de dominio
cxf web service from wsdl (1)
Estoy usando enlaces JAXB para desasignar directamente a los objetos de mi capa de dominio, que son subclases de los tipos de servicio web generados. Esta es una buena solución, ya que puedo anular los métodos y proporcionar una lógica personalizada de escritura, etc. Sin embargo, el compilador XJC insiste en poner las anotaciones @XmlSeeAlso ({MySubclass.class}) en todas las clases generadas, lo que está causando que sean estrechamente unido a mis objetos de dominio. Esto es obviamente indeseable y causa todo tipo de problemas de referencia entre mis proyectos que no entraré aquí.
¿Es posible generar clases que no tengan la anotación @XmlSeeAlso? El trabajo real de desasignar a la subclase parece ocurrir en la clase ObjectFactory. ¿Es posible omitir el enlace jaxb y sustituirlo por un ObjectFactory personalizado para cada aplicación? Esto me permitiría tener tipos de servicios web autogenerados en una utilidad compartida, mientras que cada proyecto web podría desempaquetar a diferentes subclases de estos tipos.
<jaxb:bindings node="//xs:complexType[@name=''AutogeneratedWebserviceType'']">
<jaxb:class implClass="my.project.CustomSubclass" />
</jaxb:bindings>
Este enlace creará un método en ObjectFactory que parece hacer el trabajo real de desasignación a mi subclase:
public AutogeneratedWebserviceType createAutogeneratedWebserviceType() {
return new CustomSubclass();
}
Quiero este comportamiento sin la anotación @XmlSeeAlso al proporcionar un ObjectFactory de cliente, si es posible.
¿Intentó ejecutar XJC con el argumento -target 2.0? Creo que esto deshabilitará la generación de la anotación @XmlSeeAlso.