Wygeneruj usługę WWW z WSDL w formacie Document / literal

Mam problemy z generowaniem WS z WSDL za pomocą wsimport.

WSDL jest standardową specyfikacją TMDD v3.0 (można znaleźć WSDL i powiązane pliki XSDtutaj)

Wedługten artykuł od IBM WSDL wydaje się być w formacie Document / literal.

Aby skompilować plik WSDL, utworzyłem kilka powiązań / poprawek, ale utknąłem przy tym błędzie (nie generuje metody, 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

Dla uproszczenia jest to okrojona wersja WSDL z tylko interesującą definicją operacji

<?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 powiązań:

<?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>

Wiersz polecenia do wywołania wsimport jest następujący:

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

Co mogę zrobić, aby poprawnie utworzyć operację „DlFullEventUpdateSubscription”? Czy są jakieś alternatywy do generowania usługi WWW Java? Nie mogę zmodyfikować definicji operacji, ponieważ nie byłaby ona zgodna ze standardem.

Aktualizacja. Rozwiązanie

Udało mi się go uruchomić, modyfikując WSDL, więc każda część wiadomości jest przypisana do nagłówka i treści:

<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>

questionAnswers(1)

yourAnswerToTheQuestion