2012-05-15 21 views
5

Mam problemy generowania WS z pliku WSDL za pomocą programu wsimport.Generowanie usługi WWW z pliku WSDL z formatem dokumentu/literału

WSDL jest specyfikacja standardem v3.0 TMDD (WSDL i powiązanych plików XSD można znaleźć here)

Według this article from IBM WSDL wydaje się być w formacie dokumentu/dosłownym.

Aby uzyskać WSDL skompilowany I stworzyli pewne powiązania/szczypie jednak siedzę w tym błędem (nie generuje metodę, ponieważ operacja ma więcej niż jedną część):

[WARNING] Ingoring operation "DlFullEventUpdateSubscription": more than one part 
bound to body 
    line 17 of file:/O:/temp/wsdltest/TMDD-stripped.wsdl 

Aby Upraszczając, jest to okrojona wersja WSDL tylko ciekawą definicję pracy

<?xml version="1.0" encoding="UTF-8"?> 
<definitions xmlns:tns="http://www.tmdd.org/3/dialogs" 
    xmlns:tmdd="http://www.tmdd.org/3/messages" xmlns="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:c2c="http://www.ntcip.org/c2c-message-administration" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    name="TMDDCenterServices" targetNamespace="http://www.tmdd.org/3/dialogs"> 
    <documentation> 
    </documentation> 
    <types> 

     <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
      <xs:import namespace="http://www.tmdd.org/3/messages" 
       schemaLocation="TMDD.xsd" /> 
      <xs:import namespace="http://www.ntcip.org/c2c-message-administration" 
       schemaLocation="C2C.xsd" /> 
     </xs:schema> 
    </types> 
    <message name="MSG_EventSubscription"> 
     <part name="c2cMsgAdmin" element="c2c:c2cMessageSubscription" /> 
     <part name="message" element="tmdd:eventRequestMsg" /> 
    </message> 
    <!-- Common Messages --> 
    <message name="MSG_ConfirmationReceipt"> 
     <!-- CONNECTION MANAGEMENT Messages --> 
     <part name="message" element="c2c:c2cMessageReceipt" /> 
    </message> 
    <message name="MSG_ErrorReport"> 
     <part name="message" element="tmdd:errorReportMsg" /> 
    </message> 
    <!-- TMDD Owner Center Porttype --> 
    <portType name="tmddOCSoapHttpServicePortType"> 
     <operation name="DlFullEventUpdateSubscription"> 
      <documentation> 
       <objectClass>Event</objectClass> 
       <msgPattern>Sub</msgPattern> 
       <requirement>REQ1261</requirement> 
      </documentation> 
      <input message="tns:MSG_EventSubscription" /> 
      <output message="tns:MSG_ConfirmationReceipt" /> 
      <fault name="errorReport" message="tns:MSG_ErrorReport" /> 
     </operation> 
    </portType> 
    <!-- TMDD Owner Center binding --> 
    <binding name="tmddOCSoapHttpServiceBinding" type="tns:tmddOCSoapHttpServicePortType"> 
     <soap:binding style="document" 
      transport="http://schemas.xmlsoap.org/soap/http" /> 
     <operation name="DlFullEventUpdateSubscription"> 
      <soap:operation soapAction="' '" style="document" /> 
      <input> 
       <soap:body use="literal" /> 
      </input> 
      <output> 
       <soap:body use="literal" /> 
      </output> 
      <fault name="errorReport"> 
       <soap:fault name="errorReport" use="literal" /> 
      </fault> 
     </operation> 
    </binding> 
    <!-- TMDD Owner Center Service --> 
    <service name="tmddOCSoapHttpService"> 
     <!-- ************************ --> 
     <!-- OWNER CENTER Services --> 
     <!-- ************************ --> 
     <port name="tmddOCSoapHttpServicePort" binding="tns:tmddOCSoapHttpServiceBinding"> 
      <soap:address location="http://tmdd.owner.center.com/c2cxml/" /> 
     </port> 
    </service> 
</definitions> 

plik wiązania:

<?xml version="1.0" encoding="UTF-8"?> 
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.1" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"> 
    <!-- To create standalone classes instead of nested classes --> 
    <!--<globalBindings localScoping="toplevel"/>--> 

    <!--*****************--> 
    <!-- Package Binding --> 
    <!--*****************--> 

    <!--*****************************--> 
    <!-- C2C classes package binding --> 
    <!--*****************************--> 
    <bindings schemaLocation="C2C.xsd"> 
     <schemaBindings> 
      <package name="tdf.tmdd.model.ntcip.messageadministration" /> 
     </schemaBindings> 
    </bindings> 

    <!--**************************************--> 
    <!-- ITIS-Adopted classes package binding --> 
    <!--**************************************--> 
    <bindings schemaLocation="ITIS-Adopted-03-00-02.xsd"> 
     <schemaBindings> 
      <package name="tdf.tmdd.model.itis.adopted" /> 
     </schemaBindings>  
    </bindings> 

    <!--************************************--> 
    <!-- ITIS-Local classes package binding --> 
    <!--************************************--> 
    <bindings schemaLocation="ITIS-Local-03-00-02.xsd"> 
     <schemaBindings> 
      <package name="tdf.tmdd.model.itis.local" /> 
     </schemaBindings> 
    </bindings> 

    <!--**************************************--> 
    <!-- LRMS-Adopted classes package binding --> 
    <!--************************************* --> 
    <bindings schemaLocation="LRMS-Adopted-02-00-00.xsd"> 
     <schemaBindings> 
      <package name="tdf.tmdd.model.lrms.adopted" /> 
     </schemaBindings>     
    </bindings> 

    <!--************************************--> 
    <!-- LRMS-Local classes package binding --> 
    <!--************************************--> 
    <bindings schemaLocation="LRMS-Local-02-00-00.xsd"> 
     <schemaBindings> 
      <package name="tdf.tmdd.model.lrms.local" /> 
     </schemaBindings> 
    </bindings> 

    <!--*******************************--> 
    <!-- NTCIP classes package binding --> 
    <!--*******************************--> 
    <bindings schemaLocation="NTCIP-References.xsd"> 
     <schemaBindings> 
      <package name="tdf.tmdd.model.ntcip.objectreferences" /> 
     </schemaBindings> 
    </bindings> 

    <!--******************************--> 
    <!-- TMDD classes package binding --> 
    <!--******************************--> 
    <bindings schemaLocation="TMDD.xsd"> 
     <schemaBindings> 
      <package name="tdf.tmdd.model" /> 
     </schemaBindings> 
    </bindings> 

    <!--***********************--> 
    <!-- Class personalization --> 
    <!--***********************--> 

    <!--************************************--> 
    <!-- LRMS-Adopted class personalization --> 
    <!--************************************--> 
    <bindings schemaLocation="LRMS-Adopted-02-00-00.xsd"> 
     <bindings node="//xs:complexType[@name='Chain']//xs:sequence//xs:element[@name='chain']//xs:complexType"> 
      <class name="ChainElement" /> 
     </bindings> 
     <bindings node="//xs:complexType[@name='GridPointPair']"> 
      <class name="GridPointPairAdopted" /> 
     </bindings>     
     <bindings node="//xs:complexType[@name='AreaLocation']"> 
      <class name="AreaLocationAdopted" /> 
     </bindings>  
     <bindings node="//xs:complexType[@name='LinkLocation']"> 
      <class name="LinkLocationAdopted" /> 
     </bindings> 
     <bindings node="//xs:complexType[@name='AdminAreaGroup']"> 
      <class name="AdminAreaGroupAdopted" /> 
     </bindings> 
     <bindings node="//xs:complexType[@name='GridPointSequence']"> 
      <class name="GridPointSequenceAdopted" /> 
     </bindings> 
     <bindings node="//xs:complexType[@name='Grid']"> 
      <class name="GridAdopted" /> 
     </bindings> 
     <bindings node="//xs:complexType[@name='NodeAttribute']"> 
      <class name="NodeAttributeAdopted" /> 
     </bindings> 
     <bindings node="//xs:complexType[@name='GridPoint']"> 
      <class name="GridPointAdopted" /> 
     </bindings>  
    </bindings> 

    <!--********************************--> 
    <!-- factory method personalization --> 
    <!--********************************--> 

    <!--*************************************--> 
    <!-- TMDD factory method personalization --> 
    <!--*************************************--> 
    <bindings schemaLocation="TMDD.xsd" > 
     <bindings node="//xs:complexType[@name='IntersectionSignalInventoryLinkList']"> 
      <factoryMethod name="createIntersectionSignalInventoryLinks" /> 
     </bindings> 
    </bindings> 
</bindings> 

Linia komend powołać wsimport jest następujący:

O:\temp\wsdltest>wsimport -extension -Xdebug -s src -b bindings.xjb TMDD-stripped.wsdl 

Co mogę zrobić, aby uzyskać „DlFullEventUpdateSubscription” operacja poprawnie stworzony? Czy są jakieś alternatywy do generowania usługi WWW Java? Nie mogę zmodyfikować definicji operacji, ponieważ nie byłoby to zgodne z normą.

Aktualizacja. Rozwiązanie

udało mi się go uruchomić poprzez modyfikację WSDL więc każda część wiadomości jest przypisany do nagłówka i ciała:

<binding name="tmddOCSoapHttpServiceBinding" type="tns:tmddOCSoapHttpServicePortType"> 
    <soap:binding style="document" 
     transport="http://schemas.xmlsoap.org/soap/http" /> 
    <operation name="DlFullEventUpdateSubscription"> 
     <soap:operation soapAction="' '" style="document" /> 
     <input> 
      <soap:header message="tns:MSG_EventSubscription" use="literal" part="c2cMsgAdmin"/> 
      <soap:body use="literal" parts="message"/> 
     </input> 
     <output> 
      <soap:body use="literal" /> 
     </output> 
     <fault name="errorReport"> 
      <soap:fault name="errorReport" use="literal" /> 
     </fault> 
    </operation> 
</binding> 

Odpowiedz

2

Dosłowne dokumentu nie może mieć operacje wiadomości wieloczęściowe. Możesz użyć poniższych opcji.

  • Użyj stylu Dokument/Literalny zapakowany - Zawiń wiele części w pojedynczym dokumencie .
  • Użyj stylu RPC/literału - bez ograniczeń dotyczących wiązania wielu części w korpusie z mydłem.

Dzięki, Sreehari.

+0

Jak skonfigurować dowolne z tych opcji w pliku wsdl? Dzięki –

+0

Umieść c2cMessageSubscription i eventRequestMsg w innym elemencie. ' \t ... \t ... ' następnie dodać "root" jako jedynej części MSG_EventSubscription. – sreehari

Powiązane problemy