1 Reply Latest reply on Nov 2, 2009 5:21 AM by Richard Opalka

    WSDL generated incorrectly?

    Eugene Westerhof Newbie

      Hi,

      I am using wstools from eclipse 3.5.1. and jboss-5.1.0.GA to generate a top-down webservice. It is generated from the following, I believe (syntacticly) correct, wsdl with <mime:multipartRelated> elements.

      <?xml version="1.0" encoding="UTF-8"?>
      <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
       xmlns:tns="http://com.lei.nl/modelAgent"
       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
       xmlns:lei="http://com.lei.nl/modelAgent"
       name="ModelAgentService"
       targetNamespace="http://com.lei.nl/modelAgent">
       <wsdl:types>
       <xsd:schema xmlns:lei="http://com.lei.nl/modelAgent" targetNamespace="http://com.lei.nl/modelAgent" >
       <xsd:element name="ModelAgentRequest">
       <xsd:complexType>
       <xsd:sequence>
       <xsd:element minOccurs="1" maxOccurs="1" name="modelType" type="xsd:string"/>
       <xsd:element minOccurs="1" maxOccurs="1" name="modelName" type="xsd:string"/>
       <xsd:element minOccurs="0" maxOccurs="unbounded" name="modelParameters" type="lei:ModelParameter"/>
       </xsd:sequence>
       </xsd:complexType>
       </xsd:element>
       <xsd:element name="ModelAgentResponse">
       <xsd:complexType>
       <xsd:sequence>
       <xsd:element minOccurs="1" maxOccurs="1" name="returnCode" type="xsd:string"/>
       </xsd:sequence>
       </xsd:complexType>
       </xsd:element>
       <xsd:complexType name="ModelParameter">
       <xsd:sequence>
       <xsd:element minOccurs="1" name="parameterName" type="xsd:string"/>
       <xsd:element minOccurs="1" name="parameterValue" type="xsd:string"/>
       </xsd:sequence>
       </xsd:complexType>
       </xsd:schema>
       </wsdl:types>
       <wsdl:message name="invokeRequestMsg">
       <wsdl:part name="ModelAgentRequest" element="lei:ModelAgentRequest"/>
       <wsdl:part name="gdxAttachment" type="xsd:base64Binary"/>
       </wsdl:message>
       <wsdl:message name="invokeResponseMsg">
       <wsdl:part name="ModelAgentResponse" element="lei:ModelAgentResponse"/>
       <wsdl:part name="gdxAttachment" type="xsd:base64Binary"/>
       </wsdl:message>
       <wsdl:portType name="ModelAgentService">
       <wsdl:operation name="invoke">
       <wsdl:input message="tns:invokeRequestMsg" name="invokeRequestMsg"/>
       <wsdl:output message="tns:invokeResponseMsg" name="invokeResponseMsg"/>
       </wsdl:operation>
       </wsdl:portType>
       <wsdl:binding name="ModelAgentServiceSOAP" type="tns:ModelAgentService">
       <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
       <wsdl:operation name="invoke">
       <soap:operation soapAction=""/>
       <wsdl:input name="invokeRequestMsg">
       <mime:multipartRelated>
       <mime:part>
       <soap:body parts="ModelAgentRequest" use="literal"/>
       </mime:part>
       <mime:part>
       <mime:content part="gdxAttachment" type="application/octet-stream"/>
       </mime:part>
       </mime:multipartRelated>
       </wsdl:input>
       <wsdl:output name="invokeResponseMsg">
       <mime:multipartRelated>
       <mime:part>
       <soap:body parts="ModelAgentResponse" use="literal"/>
       </mime:part>
       <mime:part>
       <mime:content part="gdxAttachment" type="application/octet-stream"/>
       </mime:part>
       </mime:multipartRelated>
       </wsdl:output>
       </wsdl:operation>
       </wsdl:binding>
       <wsdl:service name="ModelAgentSOAPService">
       <wsdl:port binding="tns:ModelAgentServiceSOAP" name="ModelAgentServiceSOAP">
       <soap:address location="http://localhost:9080/ModelAgentWeb/services/ModelAgentServiceSOAP"/>
       </wsdl:port>
       </wsdl:service>
      </wsdl:definitions>
      


      All the classes are generated coorectly. However, the wsdl published by JBoss look like this

      definitions name="ModelAgentService" targetNamespace="http://com.lei.nl/modelAgent" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://com.lei.nl/modelAgent" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://modelagent.lei.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <types>
       <xs:schema targetNamespace="http://com.lei.nl/modelAgent" version="1.0" xmlns:tns="http://com.lei.nl/modelAgent" xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <xs:element name="ModelAgentRequest">
       <xs:complexType>
       <xs:sequence>
       <xs:element name="modelType" type="xs:string" />
       <xs:element name="modelName" type="xs:string" />
       <xs:element maxOccurs="unbounded" minOccurs="0" name="modelParameters" nillable="true" type="tns:ModelParameter" />
       </xs:sequence>
       </xs:complexType>
       </xs:element>
       <xs:element name="ModelAgentResponse">
       <xs:complexType>
       <xs:sequence>
       <xs:element name="returnCode" type="xs:string" />
       </xs:sequence>
       </xs:complexType>
       </xs:element>
       <xs:element name="gdxAttachment" nillable="true" type="xs:base64Binary" />
       <xs:complexType name="ModelParameter">
       <xs:sequence>
       <xs:element name="parameterName" type="xs:string" />
       <xs:element name="parameterValue" type="xs:string" />
       </xs:sequence>
       </xs:complexType>
       </xs:schema>
       </types>
       <message name="ModelAgentService_invoke">
       <part element="ns1:gdxAttachment" name="gdxAttachment" />
       </message>
       <message name="ModelAgentService_invokeResponse">
       <part element="ns1:gdxAttachment" name="gdxAttachment" />
       </message>
       <portType name="ModelAgentService">
       <operation name="invoke" parameterOrder="ModelAgentRequest gdxAttachment">
       <input message="ns1:ModelAgentService_invoke" />
       <output message="ns1:ModelAgentService_invokeResponse" />
       </operation>
       </portType>
       <binding name="ModelAgentServiceBinding" type="ns1:ModelAgentService">
       <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
       <operation name="invoke">
       <soap:operation soapAction="" />
       <input>
       <soap:body use="literal" />
       </input>
       <output>
       <soap:body use="literal" />
       </output>
       </operation>
       </binding>
      </definitions>
      


      What happened here is the first parts of the request and response messages are lost, and cannot therefore not be read a client.

      Has anyone any idea what i am doing wrong?

      Thnak you