I'm using Message style, and when I have one method defined
everything works OK. But, when I add another method to my
service, I get the following exception:
Couldnt find an appropriate operation for XML QName {0}
I've searched the mailing list for information regarding this, and
found a comment that Message style supports only one method
(i.e. operation) per service. Is this true?
Or is there a way for me to somehow indicate the operation name
in the Soap request for Message style services?
Here is the WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://DocStyle.test.com"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://DocStyle.test.com"
xmlns:intf="http://DocStyle.test.com"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<schema targetNamespace="http://DocStyle.test.com"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:element name="JISoapHeader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="configFile" nillable="true" type="xsd:string"/>
<xsd:element name="sessionName" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="StockSymbol_XSD" type="xsd:string">
</xsd:element>
<xsd:element name="StockPrice_XSD" type="xsd:string">
</xsd:element>
</schema>
</wsdl:types>
<wsdl:message name="JIHeaderRequest">
<wsdl:part element="intf:JISoapHeader" name="JIHeader"/>
</wsdl:message>
<wsdl:message name="stockQuoteRequest">
<wsdl:part element="intf:StockSymbol_XSD" name="InVar_0"/>
</wsdl:message>
<wsdl:message name="stockQuoteResponse">
<wsdl:part element="intf:StockPrice_XSD" name="OutVar_0"/>
</wsdl:message>
<wsdl:portType name="DocStyleImpl">
<wsdl:operation name="stockQuote" parameterOrder="InVar_0">
<wsdl:input message="intf:stockQuoteRequest"
name="stockQuoteRequest"/>
<wsdl:output message="intf:stockQuoteResponse"
name="stockQuoteResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="DocStyle" type="intf:DocStyleImpl">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="stockQuote">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="stockQuoteRequest">
<wsdlsoap:body namespace="http://DocStyle.test.com" use
="literal"/>
<wsdlsoap:header message="intf:JIHeaderRequest"
namespace="http://DocStyle.test.com"
part="JIHeader" use="literal">
</wsdlsoap:header>
</wsdl:input>
<wsdl:output name="stockQuoteResponse">
<wsdlsoap:body namespace="http://DocStyle.test.com" use
="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="DocStyle">
<wsdl:port binding="intf:DocStyle" name="DocStylePort">
<wsdlsoap:address location
="http://localhost:8091/axis/services/DocStyle"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Here is my WSDD with the 2nd method defined in allowedMethods:
<deployment
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="DocStyle" provider="Handler" style="message">
<wsdlFile>/DocStyle.wsdl</wsdlFile>
<parameter name="className" value
="com.test.DocStyle.DocStyleImpl"/>
<parameter name="handlerClass" value="com.test.MyMsgProvider"/>
<parameter name="allowedMethods" value="MyDebug stockQuote"/>
</service>
</deployment>
Here is the request my .NET client is generating, which results in the
above exception:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<StockSymbol_XSD
xmlns="http://DocStyle.test.com">XYZ</StockSymbol_XSD>
</soap:Body>
</soap:Envelope>
Regards.
Steve Pannier