Given below ( the interface, the client, the generated WSDL and the SOAP messages 
generated).  When I use the generated stubs, methods with the same 
signature ( int add( int ) and int subtract( int ) ) are not distinguished on the 
server side.  What happens is that add gets called when subtract should.  This seems 
like a bug?
Things work fine if I use RPC Encoded though. I am using Axis 1.1 release build.

Ross


------------ Intergace ------------------------
public interface Doit {
        public int add( int value );
        public int subtract( int value );
        public String getString();      
}
------------- Client ----------------------------------------
   DoitServiceLocator locator = new DoitServiceLocator();
   Doit doit = locator.getDoit(new URL("http://localhost:6060/axis/services/Doit";));
   org.apache.axis.client.Stub stub = (Stub) doit;
   stub.setTimeout(45000);//in milliseconds
   stub.setMaintainSession(true);
   // Invoke Service 
   int result = doit.add(5);
   result = doit.subtract(2);
   String str = doit.getString();
------------ Java2WSDL --------------------------------------------
java -org.apache.axis.wsdl.Java2WSDL  
-oC:\eclipse\runtime-workspace\Doit/wsdl/doit.wsdl -lhttp://localhost:8080/doit -T1.2 
-yDocument -uLiteral -nurn:NS.doit Doit
------------ WSDL2Java --------------------------------------------
java org.apache.axis.wsdl.WSDL2Java  -T1.2 -O45 -dSession -s -Sfalse -px.y 
-oC:\eclipse\runtime-workspace\doit/. C:/eclipse/runtime-workspace/Doit/wsdl/doit.wsdl
------------------WSDL-------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="urn:avaya.test.Doit" 
xmlns:impl="urn:avaya.test.Doit" xmlns:intf="urn:avaya.test.Doit" 
xmlns:apachesoap="http://xml.apache.org/xml-soap"; 
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; xmlns="http://schemas.xmlsoap.org/wsdl/";>
 <wsdl:types>
  <schema xmlns="http://www.w3.org/2001/XMLSchema"; 
targetNamespace="urn:avaya.test.Doit">
   <element name="in0" type="xsd:int"/>
   <element name="addReturn" type="xsd:int"/>
   <element name="getStringReturn" type="soapenc:string"/>
   <element name="in0" type="xsd:int"/>
   <element name="subtractReturn" type="xsd:int"/>
  </schema>
 </wsdl:types>
   <wsdl:message name="subtractResponse">
      <wsdl:part name="subtractReturn" element="impl:subtractReturn"/>
   </wsdl:message>
   <wsdl:message name="addRequest">
      <wsdl:part name="in0" element="impl:in0"/>
   </wsdl:message>
   <wsdl:message name="subtractRequest">
      <wsdl:part name="in0" element="impl:in0"/>
   </wsdl:message>
   <wsdl:message name="getStringRequest">
   </wsdl:message>
   <wsdl:message name="getStringResponse">
      <wsdl:part name="getStringReturn" element="impl:getStringReturn"/>
   </wsdl:message>
   <wsdl:message name="addResponse">
      <wsdl:part name="addReturn" element="impl:addReturn"/>
   </wsdl:message>
   <wsdl:portType name="Doit">
      <wsdl:operation name="add" parameterOrder="in0">
         <wsdl:input name="addRequest" message="impl:addRequest"/>
         <wsdl:output name="addResponse" message="impl:addResponse"/>
      </wsdl:operation>
      <wsdl:operation name="getString">
         <wsdl:input name="getStringRequest" message="impl:getStringRequest"/>
         <wsdl:output name="getStringResponse" message="impl:getStringResponse"/>
      </wsdl:operation>
      <wsdl:operation name="subtract" parameterOrder="in0">
         <wsdl:input name="subtractRequest" message="impl:subtractRequest"/>
         <wsdl:output name="subtractResponse" message="impl:subtractResponse"/>
      </wsdl:operation>
   </wsdl:portType>
   <wsdl:binding name="DoitSoapBinding" type="impl:Doit">
      <wsdlsoap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
      <wsdl:operation name="add">
         <wsdlsoap:operation soapAction=""/>
         <wsdl:input name="addRequest">
            <wsdlsoap:body use="literal" namespace="urn:avaya.test.Doit"/>
         </wsdl:input>
         <wsdl:output name="addResponse">
            <wsdlsoap:body use="literal" namespace="urn:avaya.test.Doit"/>
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation name="getString">
         <wsdlsoap:operation soapAction=""/>
         <wsdl:input name="getStringRequest">
            <wsdlsoap:body use="literal" namespace="urn:avaya.test.Doit"/>
         </wsdl:input>
         <wsdl:output name="getStringResponse">
            <wsdlsoap:body use="literal" namespace="urn:avaya.test.Doit"/>
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation name="subtract">
         <wsdlsoap:operation soapAction=""/>
         <wsdl:input name="subtractRequest">
            <wsdlsoap:body use="literal" namespace="urn:avaya.test.Doit"/>
         </wsdl:input>
         <wsdl:output name="subtractResponse">
            <wsdlsoap:body use="literal" namespace="urn:avaya.test.Doit"/>
         </wsdl:output>
      </wsdl:operation>
   </wsdl:binding>
   <wsdl:service name="DoitService">
      <wsdl:port name="Doit" binding="impl:DoitSoapBinding">
         <wsdlsoap:address location="http://localhost:8080/Doit"/>
      </wsdl:port>
   </wsdl:service>
</wsdl:definitions>
-------------------------------------------------
SOAP MESSAGES

(add request )
POST /axis/services/Doit HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: 
application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.1 
Host: localhost Cache-Control: no-cache Pragma: no-cache SOAPAction: "" 
Content-Length: 329  
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
 <soapenv:Body>
  <in0 xsi:type="xsd:int" xmlns="urn:avaya.test.Doit">5</in0>
 </soapenv:Body>
</soapenv:Envelope>

(subtract request)
POST /axis/services/Doit HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: 
application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.1 
Host: localhost Cache-Control: no-cache Pragma: no-cache SOAPAction: "" 
Content-Length: 329 Cookie: JSESSIONID=831C6114C07150699BBC1DB773F2E740  
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
 <soapenv:Body>
  <in0 xsi:type="xsd:int" xmlns="urn:avaya.test.Doit">2</in0>
 </soapenv:Body>
</soapenv:Envelope>

(get String request)
POST /axis/services/Doit HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: 
application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.1 
Host: localhost Cache-Control: no-cache Pragma: no-cache SOAPAction: "" 
Content-Length: 310 Cookie: JSESSIONID=831C6114C07150699BBC1DB773F2E740  
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
 <soapenv:Body>
  <getString xmlns="urn:avaya.test.Doit"/>
 </soapenv:Body>
</soapenv:Envelope>

-------------------------------
------------------WSDD -------------
<deployment
    xmlns="http://xml.apache.org/axis/wsdd/";
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java";>

  <!-- Services from DoitService WSDL service -->

  <service name="Doit" provider="java:RPC" style="document" use="literal">
      <parameter name="wsdlTargetNamespace" value="urn:avaya.test.Doit"/>
      <parameter name="wsdlServiceElement" value="DoitService"/>
      <parameter name="wsdlServicePort" value="Doit"/>
      <parameter name="className" value="x.y.DoitSoapBindingImpl"/>
      <parameter name="wsdlPortType" value="Doit"/>
      <operation name="add" qname="operNS:add" xmlns:operNS="urn:avaya.test.Doit" 
returnQName="retNS:addReturn" xmlns:retNS="urn:avaya.test.Doit" returnType="rtns:int" 
xmlns:rtns="http://www.w3.org/2001/XMLSchema"; >
        <parameter qname="pns:in0" xmlns:pns="urn:avaya.test.Doit" type="tns:int" 
xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
      </operation>
      <operation name="getString" qname="operNS:getString" 
xmlns:operNS="urn:avaya.test.Doit" returnQName="retNS:getStringReturn" 
xmlns:retNS="urn:avaya.test.Doit" returnType="rtns:string" 
xmlns:rtns="http://schemas.xmlsoap.org/soap/encoding/"; >
      </operation>
      <operation name="subtract" qname="operNS:subtract" 
xmlns:operNS="urn:avaya.test.Doit" returnQName="retNS:subtractReturn" 
xmlns:retNS="urn:avaya.test.Doit" returnType="rtns:int" 
xmlns:rtns="http://www.w3.org/2001/XMLSchema"; >
        <parameter qname="pns:in0" xmlns:pns="urn:avaya.test.Doit" type="tns:int" 
xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
      </operation>
      <parameter name="allowedMethods" value="add getString subtract"/>
      <parameter name="scope" value="Session"/>

  </service>
</deployment>

Reply via email to