I have written my first 'rpc' SOAP service and have
successfully sent data from the client to the server and responded.
However.
I really want to use the messaging
pattern.
So I did the following
1. added type="message" to my isd:service
descriptor and then deployed.
2. I changed my server side code to
public void transfer (Envelope env,
SOAPContext reqCtx, SOAPContext resCtx)
throws MessagingException, IOException { System.out.println("Originals:" + env.getBody().toString()); resCtx.setProperty("originals response", "text/xml"); } 3. I changed my client to use.
Envelope msgEnv =
Envelope.unmarshall(doc.getDocumentElement());
Message msg = new Message (); msg.send (url, "", msgEnv); The doc argument contains
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<transfer xmlns="urn:Originals"/>
</s:Body>
</s:Element>
4. The request is sent ok however the response says the following:
<stackTrace>java.lang.NoSuchMethodException:
showads.dds.cmd.Originals.transfer([none]) not found.
at org.apache.soap.util.MethodUtils.getEntryPoint(MethodUtils.java, Compiled Code) at org.apache.soap.server.RPCRouter.invoke(RPCRouter.java, Compiled Code) at org.apache.soap.providers.RPCJavaProvider.invoke(RPCJavaProvider.java:129) at org.apache.soap.server.http.RPCRouterServlet.doPost(RPCRouterServlet.java, Compiled Code) at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) at javax.servlet.http.HttpServlet.service(HttpServlet.java:826) at com.netscape.server.http.servlet.NSServletRunner.Service(NSServletRunner.java:497) </stackTrace> The bit that concerns me is the part of the stack says 'rpc' I would have thought that the provider would be a MsgJavaProvider.
Thanks
Warwick.
|
- Re: Problems with SOAP Messaging Warwick Slade
- Re: Problems with SOAP Messaging Sanjiva Weerawarana