users@saaj.java.net

getSOAPBody problem

From: RICO <riccardo.bussandri_at_gmail.com>
Date: Thu, 4 Dec 2008 17:29:02 +0100

Hi,
I have a problem with saaj 1.3 and JDK 1.6

I have a simple servlet that creates a SOAPMessage beginning from an
InputStream.
When I try to get anything from the SOAPMessage (see System.out line) I get
null in console, but if I use the writeTo() method, it works, so it seems
that the object is properly created.

I need to use getSOAPBody() method to access and parse the SOAP message.

Note: with JDK 1.5 this code works properly, but to use some other libraries
I must use JDK 1.6.

What's wrong in my code updating from JDK 1.5 to 1.6?
(In attachment java code and below the SOAP message code)

Thanks a lot

Riccardo

Here the code:

public void doPost(HttpServletRequest req, HttpServletResponse res) throws
ServletException, IOException {

        res.setContentType("text/xml; charset=utf-8");

        SOAPMessage soapReq = null;
        SOAPMessage soapRes = null;

        try {
            MessageFactory msgFactory = MessageFactory.newInstance();
            soapReq = msgFactory.createMessage(null, req.getInputStream());

            soapReq.saveChanges();
            soapRes = msgFactory.createMessage();


System.out.println(soapReq.getSOAPBody().getFirstChild().getLocalName());
            soapReq.writeTo(res.getOutputStream());

        } catch (SOAPException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
}

and the SOAP message I tried:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
  <SOAP-ENV:Envelope
   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
   xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
   xmlns:xsd="http://www.w3.org/1999/XMLSchema">
    <SOAP-ENV:Body>
        <ns1:doubleAnInteger
         xmlns:ns1="urn:MySoapServices">
            <param1 xsi:type="xsd:int">123</param1>
        </ns1:doubleAnInteger>
    </SOAP-ENV:Body>
  </SOAP-ENV:Envelope>