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.

Reply via email to