2011-04-08 15 views
5

Mi aplicación de servicios web se está moviendo de Axis a JAX-WS y tengo problemas para realizar algunas de las conversiones. Mi problema principal es que tengo varios XSD con los mismos tipos definidos de forma ligeramente diferente, pero con los mismos nombres. Durante mi wsimport, puedo usar un archivo de enlaces JAXB externo para resolver los paquetes, pero las clases generadas todavía terminan con las mismas anotaciones @XmlType.Reemplazo de XmlType.namespace utilizando enlaces jaxb durante la generación de tipo

V1:

package com.service.v1.bill.request; 
@XmlType(name = "FileBillReqType", namespace = "http://epayments.metavante.com/types/bill/request"}) 
public class FileBillReqType extends AbstractContextMethodRequest... 

V2:

package com.service.v2.bill.request; 
@XmlType(name = "FileBillReqType", namespace = "http://epayments.metavante.com/types/bill/request"}) 
public class FileBillReqType extends AbstractContextMethodRequest... 

Encuadernación:

<jaxb:bindings schemaLocation="file:../wsdl/v1/bill/BillRequest.xsd" 
    node="/xs:schema[@targetNamespace='http://service.example.com/bill/request']"> 
    <jaxb:schemaBindings> 
     <jaxb:package name="com.service.v1.bill.request" /> 
    </jaxb:schemaBindings> 
</jaxb:bindings> 

Anteriormente esto habría sido resuelto con las correlaciones de tipos proporcionados por eje (que no modificable en una wsdd masivamente fea):

<service name="v1" provider="java:RPC" style="document" use="literal">... 
<typeMapping 
    xmlns:ns="http://service.example.com/bill/request" 
    qname="ns:FileBillReqType" 
    type="java:com.service.v1.bill.request.FileBillReqType" 
    serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" 
    deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" 
    encodingStyle="" 
    />... 

¿Hay alguna forma de hacer que mis objetos JAXB generados tengan un espacio de nombres personalizado sin modificar los archivos generados manualmente cada vez que los regenere (hay cientos)?

+0

Mismo problema aquí ... –

Respuesta

1

Especificar otra personalización de xjb con v2 como ubicación de esquema al generar las clases de cliente utilizando wsimport podría resolver el problema.

<jaxb:bindings schemaLocation="file:../wsdl/v2/bill/BillRequest.xsd" 
node="/xs:schema[@targetNamespace='http://service.example.com/bill/request']"> 
    <jaxb:schemaBindings> 
     <jaxb:package name="com.service.v2.bill.request" /> 
    </jaxb:schemaBindings> 
</jaxb:bindings> 
Cuestiones relacionadas