2012-05-05 15 views
9

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í.JAXB @XmlSeeAlso provocando un acoplamiento estrecho con los objetos de dominio

¿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> 

Esta unión creará un método en el ObjectFactory que parece hacer el trabajo real de unmarshaling a mi subclase:

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

Quiero que este comportamiento sin la anotación @XmlSeeAlso proporcionando un cliente ObjectFactory , si es posible.

Respuesta

2

¿Intentó ejecutar XJC con el argumento -target 2.0? Creo que esto deshabilitará la generación de la anotación @XmlSeeAlso.

+0

para uso hormiga algo como esto:

+0

Muchas gracias, "-target 2.0" resolvió mi problema Estoy usando Webservices en un entorno OSGi y esta estúpida anotación en tiempo de ejecución XmlSeeAlso causó un estrechamiento estrecho a otros módulos que era completamente innecesario – lostiniceland

Cuestiones relacionadas