Pratibha,

Please upgrade to latest Axis 1.3. We've fixed this problem.

thanks,
dims

On 11/7/05, Pratibha Mittal <[EMAIL PROTECTED]> wrote:
>
>
>
> Hi,
>
>
>
> We are using Axis SAAJ implementation (version 1.1 of axis). I seem to be
> having problem when I am serializing the SOAP envelope object to byte
> stream. It is putting extra whitespaces and line breaks. This is causing
> problem in verification of message when a signed message comes.
>
>
>
> The scenario is like this:
>
>
>
> A web service client signs the soap BODY, and sends to the server. The
> server mainpulates the SOAP header (does not touch the body) using SAAJ java
> APIs. Then the server tries to verify the soap message. For verification,
> when it retrives the soap message, axis needs to recreate the byte stream
> from java SOAP Envelope object since the message has been modified. However
> the message retrieved does not have the the exact same SOAP Body. It has
> extra whitespaces and line breaks and hence the verification fails.
>
>
>
> I was able to isolate problem in a simple test example and I can see that
> the body gets changed when axis recreates the byte stream.
>
>
>
> Is this an Axis bug? Is it fixed in later versions? Has anybody encountered
> similar problem? What are the options I have to solve this problem? Could
> anybody please reply.
>
>
>
> Attached is the test program I used which gives the problem.
>
>
>
> Thanks
>
> Pratibha Mittal
>
> Oracle Corporation
>
>
>
> ******************************************************************************
>
>
>
>     public static void test() {
>
>       String str0 = new String(
>
>       "<soap:Envelope
> xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"; " +
>
>       "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"; " +
>
>
> "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"; "
> +
>
>
> "xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\";
> " +
>
>
> "soap:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\";>
> \n" +
>
>         "<soap:Body>\n" +
>
>         "      <ns2:getTime
> xmlns:ns2=\"urn:Test:GetTime\">\n" +
>
>         "         <format
> xsi:type=\"xsd:String\">VALUE</format>\n" +
>
>         "      </ns2:getTime>\n" +
>
>         "</soap:Body>\n" +
>
>         "</soap:Envelope>");
>
>       byte[] b0 = str0.getBytes();
>
>       ByteArrayInputStream inputstream = new ByteArrayInputStream(b0);
>
>
>       try {
>
>
>
>         Message message = new Message(inputstream, false, null);
>
>         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
>
>         message.writeTo(outputStream);
>
>         byte[] b1 = outputStream.toByteArray();
>
>         writeByteArray(b1);
>
>
>
>         SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
>
>         SOAPHeader existingHeader = envelope.getHeader();
>
>         if(existingHeader != null) existingHeader.detachNode();
>
>         SOAPHeader newHeader = envelope.addHeader();
>
>
>
>         ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();
>
>
>         message.writeTo(outputStream2);
>
>         byte[] b2 = outputStream2.toByteArray();
>
>         writeByteArray(b2);
>
>
>
>       } catch (Exception e) {
>
>         e.printStackTrace();
>
>       }
>
>     }
>
>
>
>     public static void writeByteArray(byte[] b) {
>
>
>
>       try {
>
>         long l = (new java.util.Date()).getTime();
>
>         String numStr = (new Long(l)).toString();
>
>         java.io.BufferedReader br = new java.io.BufferedReader(new
> java.io.InputStreamReader(new java.io.ByteArrayInputStream(b)));
>
>         String str = br.readLine();
>
>         while(str != null) {
>
>             System.out.println(str);
>
>             str = br.readLine();
>
>         }
>
>
>
>       } catch (Exception e) {
>
>         e.printStackTrace();
>
>       }
>
>       System.out.println("\n");
>
>     }
>
>
>
>
>
>


--
Davanum Srinivas : http://wso2.com/blogs/

Reply via email to