servicios services oneway from framework example java web-services jaxb jax-ws cxf

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.