2011-04-08 51 views
5

我的Web服務應用程序正在從Axis遷移到JAX-WS,並且在執行某些轉換時遇到問題。我的主要問題是,我有幾個XSD的定義略有不同,但名稱相同。在我的wsimport期間,我可以使用外部JAXB綁定文件來解析包,但生成的類仍然以相同的@XmlType註釋結束。在生成類型期間使用jaxb綁定替換XmlType.namespace

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對象有一個自定義的命名空間,而不必每次手動修改生成的文件(每次重新生成它們時)(有幾百個)?

+0

同樣的問題在這裏... – 2011-05-11 19:45:57

回答

1

在使用wsimport生成客戶端類時,指定v2的另一個xjb自定義作爲模式位置可能會解決此問題。

<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> 
相關問題