Hi guys

 

Thanks for your insightful responses - but now my problem has moved on somewhat. I have left behind (or maybe now not yet reaching!) the null pointer exception and am now experiencing a 'no signature match exception':

 

<faultstring>Exception while handling service request: altituderesponsatest.Processor.responsaQuery(org.apache.soap.Envelope,org.apache.soap.rpc.SOAPContext,org.apache.soap.rpc.SOAPContext) -- no signature match</faultstring>

 

 

I have altered all parts involved in the application in an attempt to overcome the null pointer exception (including implementing a generic way of creating the document - thanks Scott). Here are the new bits:

 

Deployment Descriptor:

 

<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"

             id="urn:Processor" type="message">

  <isd:provider type="java"

                scope="Application"

                methods="responsaQuery">

    <isd:java class="altituderesponsatest.Processor" static="false"/>

  </isd:provider>

 

 <isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListener>

</isd:service>

 

Message sent by client to server:

 

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

 <s:Body>

  <responsaQuery number="0208233826" xmlns="urn:Processor"/>  </s:Body> </s:Envelope>

 

Server:

 

package altituderesponsatest;

 

public class Processor {

 

  public void responsaQuery(Envelope env, SOAPContext req, SOAPContext res)

        throws Exception{

      DocumentBuilder docbuilder = XMLParserUtils.getXMLDocBuilder();

      Document doc = docbuilder.newDocument();

      Element response = doc.createElement("response");

      Vector bodyEntries = new Vector();

      bodyEntries.add(response);

      StringWriter writer = new StringWriter();

      env.marshall(writer, null);

      res.setRootPart(writer.toString(), "text/xml");

    }

}

 

 

 

 

Client:

 

package altituderesponsatest;

public class AniSender {

 

  public void sendAni(URL serviceURL, String msgFilename)

      throws IOException, SAXException, SOAPException {

 

      FileReader reader = new FileReader(msgFilename);

      DocumentBuilder builder = XMLParserUtils.getXMLDocBuilder();

      Document doc = builder.parse(new InputSource(reader));

      if (doc == null) {

          throw new SOAPException(Constants.FAULT_CODE_CLIENT,

              "Error parsing XML message.");

      }

      Envelope msgEnvelope = Envelope.unmarshall(doc.getDocumentElement());

      Message msg = new Message();

      msg.send(serviceURL, "urn:Processor", msgEnvelope);

      SOAPTransport transport = msg.getSOAPTransport();

      BufferedReader resReader = transport.receive();

      String line;

      while ((line = resReader.readLine()) != null) {

          System.out.println(line);

      }

  }

 

  public static void main(String[] args) {

      try {

          URL serviceURL =

              new URL("http://localhost:8080/soap/servlet/messagerouter");

          AniSender aniSender = new AniSender();

          aniSender.sendAni(serviceURL, args[0]);

      } catch (Exception e) {

          e.printStackTrace();

      }

  }

 

}

 

I would be most grateful for any input

 

Tony

 

 

 

Reply via email to