Something is wrong with my wsdl
duffcase May 8, 2006 8:46 AMHi I'm new to webservices, and have a issue I can't seem to figure out.
I've followed some tutorials, and made a helloworld example implementation which was written for jboss ws4ee, using RPC/literal.
It worked fine when I tested it, and all seemed nice..
Then I wanted to test my app on a mobile device, and that ment I had to rewrite the wsdl to document/literal.
The application deploys fine, and comes up in the list of services, however I get errors when trying to run a simple client, or run stub generation from Suns wireless toolkit.
The errors I get are as follows:
Client:
Deserializing parameter 'getHelloWorld': could not find deserializer for type {http://www.w3.org/2001/XMLSchema}reqElement
And from suns wireless toolkit:
error: modeler error: invalid entity name: "resElement" (in namespace: "http://www.w3.org/2001/XMLSchema")
I've been at this for three days now, trying to figure out whats wrong, but cant seem to find anything that works.. Any help at all would be greatly appreciated! :)
Here's my WSDL:
<definitions name="HelloWorld" targetNamespace="http://DefaultNamespace" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:impl="http://DefaultNamespace"> <types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="reqElement" type="xsd:string" /> <xsd:element name="resElement" type="xsd:string" /> </xsd:schema> </types> <message name="getHelloWorldRequest"> <part name="req" type="xsd:reqElement" /> </message> <message name="getHelloWorldResponse"> <part name="res" type="xsd:resElement" /> </message> <portType name="HelloWorld"> <operation name="getHelloWorld" parameterOrder="req"> <input name="getHelloWorldRequest" message="impl:getHelloWorldRequest"/> <output name="getHelloWorldResponse" message="impl:getHelloWorldResponse"/> </operation> </portType> <binding name="HelloWorldSoapBinding" type="impl:HelloWorld"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getHelloWorld"> <soap:operation soapAction="" style="document"/> <input name="getHelloWorldRequest"> <soap:body use="literal"/> </input> <output name="getHelloWorldResponse"> <soap:body use="literal" /> </output> </operation> </binding> <service name="HelloWorldService"> <port name="HelloWorld" binding="impl:HelloWorldSoapBinding"> <soap:address location="http://10.0.102.112:8080/ws4ee/services/HelloWorld"/> </port> </service> </definitions>
My client:
import javax.xml.namespace.QName; import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class TestClient { /** * @param args */ public static void main(String[] args) { try { System.out.println("Here we go..."); String endpoint = "http://10.0.102.112:8080/testing123/blah/iruleimmensly"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(endpoint)); call.setOperationName(new QName("http://what.com", "getHelloWorld")); for(int i=1; i<=10; i++) { String ret = (String) call.invoke(new Object[] { "TYPO! " + i } ); System.out.println("Sent TYPO!" + i + ", got '" + ret + "'"); } System.out.println("End of code..."); } catch(Exception e) { System.err.println(e.toString()); } } }
If theres any more code I should supply, please tell me.