Мое приложение веб-служб перемещается из Axis в JAX-WS, и у меня возникают проблемы с выполнением некоторых преобразований.Моя основная проблема заключается в том, что у меня есть несколько XSD с одинаковыми типами, определенными немного по-разному, но с одинаковыми именами.Во время моего wsimport я могу использовать внешний файл привязок JAXB для разрешения пакетов, но сгенерированные классы по-прежнему имеют те же аннотации @XmlType.
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...
Связывание:
<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>
Ранее это можно было бы разрешить с помощью сопоставлений типов, предоставляемых осью (которые мы жестко закодировали в чрезвычайно уродливый wsdd):
<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=""
/>...
Есть ли способ, чтобы мои сгенерированные объекты JAXB имели собственное пространство имен, не изменяя сгенерированные файлы вручную каждый раз, когда я их регенерирую (их сотни)?