I have the following schema:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:m="http://ws.mypackage.com"
xmlns:xmime="http://www.w3.org/2005/05/xmlmime" elementFormDefault="qualified"
targetNamespace="http://ws.mypackage.com"
attributeFormDefault="unqualified">
<xs:element name="downloadMessageRequestSaaj">
<xs:complexType/>
</xs:element>
<xs:element name="downloadMessageRequest">
<xs:complexType/>
</xs:element>
<xs:element name="downloadMessageResponseSaaj" type="m:downloadResponseSaajType" />
<xs:complexType name="downloadResponseSaajType">
<xs:sequence>
<xs:element name="requestName" type="xs:string"/>
<xs:element name="payLoad">
<xs:complexType>
<xs:sequence>
<xs:element name="messagePayLoad" type="xs:base64Binary" xmime:expectedContentTypes="multipart/related"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadMessageResponse" type="m:downloadResponseType" />
<xs:complexType name="downloadResponseType">
<xs:sequence>
<xs:element name="requestName" type="xs:string"/>
<xs:element name="payLoad">
<xs:complexType>
<xs:sequence>
<xs:element name="messagePayLoad" type="xs:base64Binary" xmime:expectedContentTypes="multipart/related"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="localDTMRequest">
<xs:complexType/>
</xs:element>
<xs:element name="localDTMResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="localDTM" type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
And configured Spring to auto-generate the WSDL file as shown below:
<ws:dynamic-wsdl id="serviceDefinition" portTypeName="myService"
locationUri="http://localhost:8080/springWsTest/webservice">
<ws:xsd location="/WEB-INF/schemas/schema.xsd" />
</ws:dynamic-wsdl>
The generated WSDL file is missing the "messages" for downloadMessageRequestSaaj and downloadMessageResponseSaaj. Why is that?
Here is the generated wsdl file..
<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:sch="http://ws.mypackage.com" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.mypackage.com" targetNamespace="http://ws.mypackage.com">
<wsdl:types>
<xs:schema xmlns:m="http://ws.mypackage.com" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://ws.mypackage.com">
<xs:element name="downloadMessageRequestSaaj">
<xs:complexType/>
</xs:element>
<xs:element name="downloadMessageRequest">
<xs:complexType/>
</xs:element>
<xs:element name="downloadMessageResponseSaaj" type="m:downloadResponseSaajType"/>
<xs:complexType name="downloadResponseSaajType">
<xs:sequence>
<xs:element name="requestName" type="xs:string"/>
<xs:element name="payLoad">
<xs:complexType>
<xs:sequence>
<xs:element name="messagePayLoad" type="xs:base64Binary" xmime:expectedContentTypes="multipart/related"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="downloadMessageResponse" type="m:downloadResponseType"/>
<xs:complexType name="downloadResponseType">
<xs:sequence>
<xs:element name="requestName" type="xs:string"/>
<xs:element name="payLoad">
<xs:complexType>
<xs:sequence>
<xs:element name="messagePayLoad" type="xs:base64Binary" xmime:expectedContentTypes="multipart/related"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="localDTMRequest">
<xs:complexType/>
</xs:element>
<xs:element name="localDTMResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="localDTM" type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="localDTMRequest">
<wsdl:part element="tns:localDTMRequest" name="localDTMRequest">
</wsdl:part>
</wsdl:message>
<wsdl:message name="localDTMResponse">
<wsdl:part element="tns:localDTMResponse" name="localDTMResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadMessageRequest">
<wsdl:part element="tns:downloadMessageRequest" name="downloadMessageRequest">
</wsdl:part>
</wsdl:message>
<wsdl:message name="downloadMessageResponse">
<wsdl:part element="tns:downloadMessageResponse" name="downloadMessageResponse">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="myService">
<wsdl:operation name="localDTM">
<wsdl:input message="tns:localDTMRequest" name="localDTMRequest">
</wsdl:input>
<wsdl:output message="tns:localDTMResponse" name="localDTMResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="downloadMessage">
<wsdl:input message="tns:downloadMessageRequest" name="downloadMessageRequest">
</wsdl:input>
<wsdl:output message="tns:downloadMessageResponse" name="downloadMessageResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="myServiceSoap11" type="tns:myService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="localDTM">
<soap:operation soapAction=""/>
<wsdl:input name="localDTMRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="localDTMResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="downloadMessage">
<soap:operation soapAction=""/>
<wsdl:input name="downloadMessageRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="downloadMessageResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="myServiceService">
<wsdl:port binding="tns:myServiceSoap11" name="myServiceSoap11">
<soap:address location="http://localhost:8080/springWsTest/webservice"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
I have gone through the schema file a million times and just cannot see any difference between the messages that are generated and those that are not. Can you see why they are not?
It's because of the name. Spring is using the convention that messages are called SomethingRequest
and responses SomethingResponse
.