Hi Folks.

I have attached the very simple WSDL (paramtest.wsdl)
that I am testing with.  I have a couple of issues and
it would be great if someone can point some
solutions/references.

In my WSDL, I have a single operation as shown belo
(java mapping):

String testTwo(String f, String b);

The operation takes two Strings and returns the
"hello" back.

I run a simple C#.NET client (I also tried IONA Artix
C++ clients with the same results) which creates a
proxy and calls:

  ParamTestService service = new ParamTestService();
  string result = service.testTwo("abcd", "wxyz");

When I try to invoke on the operation, I can see on
the Tomcat console, that only the first argument
("abcd") reaches the service.  The second argument
never reaches the service!  If I do a
System.out.println on f and b in my operation
implementation, I see "abcd" for f (first arg), but I
see 'null' for b (second arg)!

Does anyone know of any such issues or if you can find
a problem in my WSDL, that would be too good.  But I
think my WSDL looks okay, because other WebService
tool-kits to build my service and tested the
interoperability (.NET (C#), Artix (C++), XMLBus
(Java)), the same WSDL can generate the servers and
clients fine with correct invocations on all
cross-combinations.  It seems that only Axis is having
some problems :(

PS: I looked at the request SOAP message received by
Axis, and it DOES have the second argument's value -
but somewhere in reading the incoming message or
parsing it, it loses the second argument.

Please try out the service - it will not take more
than 10 minutes ... See steps below:

- Copy the WSDL to a temp location
- Generate the server side code:
java org.apache.axis.wsdl.WSDL2Java -s -a
paramtest.wsdl
- Provides a sample implementation of the
org/apache/ka/ParamTestImpl.java methods.
- Build and deploy the service on Tomcat.
- Generate client code using the local/deployed WSDL.
- Build and run the client to invoke the method
testTwo().
- See the SOAP messages and the behavior or the
service

Thank you ...
Kartik

__________________________________
Do you Yahoo!?
Yahoo! Search - Find what you�re looking for faster
http://search.yahoo.com
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="ParamTest"
	targetNamespace="http://ka.apache.org/";
	xmlns="http://schemas.xmlsoap.org/wsdl/";
	xmlns:xsd="http://www.w3.org/2001/XMLSchema";
	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
	xmlns:tns="http://ka.apache.org/";
	xmlns:xsd1="http://ka.apache.org/types";>
	<types>
		<schema targetNamespace="http://ka.apache.org/types";
		 	xmlns="http://www.w3.org/2001/XMLSchema";
		 	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";>
		 	
			<element name="foo" type="xsd:string" />
			<element name="bar" type="xsd:string" />
			<element name="wow" type="xsd:string" />
		</schema>
	</types>
	
	<message name="testTwoIn">
		<part name="f" element="xsd1:foo" />
		<part name="b" element="xsd1:bar" />
	</message>
	<message name="testTwoOut">
		<part name="w" element="xsd1:wow" />
	</message>

	<portType name="ParamTestInterface">
		<operation name="testTwo">
			<input message="tns:testTwoIn" name="testTwoIn" />
			<output message="tns:testTwoOut" name="testTwoOut" />
		</operation>
	</portType>

	<binding name="ParamTest" type="tns:ParamTestInterface">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

		<operation name="testTwo">
			<soap:operation soapAction="" style="document" />
			<input message="tns:testTwoIn" name="testTwoIn">
				<soap:body use="literal"/>
			</input>
			<output message="tns:testTwoOut" name="testTwoOut">
				<soap:body use="literal"/>
			</output>
		</operation>
	</binding>

	<service name="ParamTestService">
		<port name="ParamTestPort" binding="tns:ParamTest">
			<soap:address location="http://localhost:8080/axis/services/ParamTestPort"/>
		</port>
	</service>
</definitions>

Reply via email to