AFAIK, message style service supports only a single
operation. Since you are using message style service
and are willing to deal with raw XML one possible
solution would be to examine the child element of SOAP
body and do your own dispatching based on it: your
WSDL would define multiple operations but the service
implentation would have only one operation. Since you
are using DOC/Lit, you need to define your WSDL so
that for every operation the corresponding SOAP body
would have unique qname for the child element.

    Sanjay
    
--- Steve Pannier <[EMAIL PROTECTED]>
wrote:
> 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
> 
> 


__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com

Reply via email to