2012-07-03 2 views
3

У меня есть WSDL, из которого я генерирую классы в NetBeans. У неизменной копии есть даты, и эти даты генерируются как XMLGregorianCalendar. Я пытаюсь переопределить это поведение и вставить тэг globalbinding, чтобы вместо этого генерировать дату Java. Однако независимо от того, где я помещаю тег привязки (показано ниже), он игнорируется, а XMLGregorianCalendar используется как тип даты.JAX-B Глобальное связывание игнорируется в WSDL

Может кто-нибудь сказать мне, если я на правильном пути, и где разместить переопределение? Ниже также приведена общая схема 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.

Смежные вопросы