2012-07-03 59 views
3

我有一個WSDL,我在其中生成了NetBeans中的類。未改變的副本具有日期,並且這些日期生成爲XMLGregorianCalendar。我試圖覆蓋該行爲並插入一個globalbinding標記,以便它生成一個Java日期。但是,無論我在哪裏放置綁定標記(如下所示),它都會被忽略,並且將XMLGregorianCalendar用作日期類型。忽略WSDL中的JAX-B全局綁定

有人可以告訴我,如果我在正確的軌道上,以及在哪裏放置覆蓋?以下也是WSDL的總體佈局。

<annotation> 
    <appinfo> 
     <jaxb:globalBindings> 
      <javaType name="java.util.Date" xmlType="xs:date" 
         parseMethod="javax.xml.bind.DatatypeConverter.parseDate" 
         printMethod="javax.xml.bind.DatatypeConverter.printDate" 
     </jaxb:globalBindings> 
    </appinfo> 
</annotation> 

編校的WSDL,顯示出什麼,我相信有關的部分是:

<types> 
    <s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:sap="http://xyz/sap" elementFormDefault="qualified" targetNamespace="http://xyz/sap"> 
     <s:element name="createOrder"> 
      <s:complexType> 
       <s:sequence> 
        <s:element ref="sap:sap-order-request" /> 
       </s:sequence> 
      </s:complexType> 
     </s:element> 
    </s:schema> 

    <xs:schema xmlns:sap="http://xyz/sap" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xyz/sap" elementFormDefault="unqualified"> 
     <xs:element name="sap-order-request"> 
      <xs:complexType> 
       <xs:sequence minOccurs="1" maxOccurs="unbounded"> 
        <xs:element name="publication-date" type="xs:date" /> 
       </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
    </xs:schema> 
</types> 

<binding name="SapSalesOrderSoap" type="s0:SapSalesOrderSoap"> 
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> 
    <operation name="createOrder"> 
     <soap:operation soapAction="http://xyz/sap/createOrder" style="document"/> 
     <input> 
      <soap:body use="literal"/> 
     </input> 
     <output> 
      <soap:body use="literal"/> 
     </output> 
    </operation> 
</binding> 

回答

1

我想你錯過了<javaType>元素的命名空間前綴 - 它需要在JAXB命名空間,而不是XML模式或WSDL名稱空間。