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>