Before i open a bug, i'd like to have the opinion of experts ! All my last tests around document/literal style let me with troubles. To start again with simple things, i have made a basic service to evaluate the primary interoperability with my J2ME client. This simple service provides a single operation that takes a string, reverses it and return it. On the client side, i work with the SUN Wireless toolkit that support the JSR172 (web-service for J2ME). Using the axis wsdl i have successfully generated the j2me client stubs, and built my midlet to call the web service. At run time, the client reports an error in the server response : the name of the response part for the return value is not as defined in the wsdl descriptor. To be sure, i had made the test again putting the tcp monitor in the middle... and it seems the client is right ! The name of the part in the wsdl is 'reverseReturn' and axis uses 'in0Return'... Is it a bug, or just another mis-interpretation of mine ? Thanks to give your opinion before i open an unnecessary bug report...
Here the java code : --- java interface --- package net.moon.me.five.ws; import java.rmi.Remote; import java.rmi.RemoteException; public interface StringTool extends Remote { public String reverse(String string) throws RemoteException; } ---------------------- I have successfully generated the wsdl with the following ant script : --- wsdl2java ant script --- <property name="my.namespace" value="http://ws.moon.net/j2me05" /> <java2wsdl output="./wsdl/j2me05ws.wsdl" className="net.moon.me.five.ws.StringTool" namespace="${my.namespace}" porttypename="StringUtility" serviceportname="StringUtilityPort" serviceelementname="J2ME05" style="DOCUMENT" location="http://ws.moon.net/j2me05"> <classpath> <pathelement location="${my.services.compile-directory}" /> <path refid="my.axis.classpath" /> </classpath> </java2wsdl> ---------------------------- The resulting WSDL, with the expected part names ! --- WSDL --- <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://ws.moon.net/j2me05" xmlns:impl="http://ws.moon.net/j2me05" xmlns:intf="http://ws.moon.net/j2me05" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <!--WSDL created by Apache Axis version: 1.2RC2 Built on Nov 16, 2004 (12:19:44 EST)--> <wsdl:types> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ws.moon.net/j2me05" elementFormDefault="qualified"> <element name="in0" type="xsd:string"/> <element name="reverseReturn" type="xsd:string"/> </schema> </wsdl:types> <wsdl:message name="reverseRequest"> <wsdl:part name="in0" element="impl:in0"/> </wsdl:message> <wsdl:message name="reverseResponse"> <wsdl:part name="reverseReturn" element="impl:reverseReturn"/> </wsdl:message> <wsdl:portType name="StringUtility"> <wsdl:operation name="reverse" parameterOrder="in0"> <wsdl:input name="reverseRequest" message="impl:reverseRequest"/> <wsdl:output name="reverseResponse" message="impl:reverseResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="StringUtilityPortSoapBinding" type="impl:StringUtility"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="reverse"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="reverseRequest"> <wsdlsoap:body use="literal"/> </wsdl:input> <wsdl:output name="reverseResponse"> <wsdlsoap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="J2ME05"> <wsdl:port name="StringUtilityPort" binding="impl:StringUtilityPortSoapBinding"> <wsdlsoap:address location="http://ws.moon.net/j2me05"/> </wsdl:port> </wsdl:service> </wsdl:definitions> ------------------------------------- And now, the dumped http request and response : --- request --- POST /j2me05ws-ejb/J2ME-05-WS/J2ME05WS HTTP/1.1 User-Agent: Profile/MIDP-1.0 Configuration/CLDC-1.0 Content-Language: en-US Content-Type: text/xml SOAPAction: " Content-Length: 315 Host: localhost <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://ws.moon.net/j2me05"> <soap:Body> <tns:in0>ABC</tns:in0> </soap:Body> </soap:Envelope> --------------- --- response --- HTTP/1.1 200 OK Set-Cookie: JSESSIONID=75C329A6CED0EE74D896E083043AFA0A; Path=/j2me05ws-ejb Content-Type: text/xml;charset=utf-8 Transfer-Encoding: chunked Date: Tue, 21 Dec 2004 14:15:18 GMT Server: Apache-Coyote/1.1 123 <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> <in0Return xmlns="http://ws.moon.net/j2me05">CBA</in0Return> </soapenv:Body></soapenv:Envelope> 0 ----------------