Web サービス アプリケーションを 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>
以前は、これは axis が提供する型マッピングで解決されていました (非常に醜い 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 オブジェクトを再生成するたびに手動で変更せずに、生成された JAXB オブジェクトにカスタム名前空間を持たせる方法はありますか (数百あります)。