[jboss-user] [JBossWS] - jax-ws soap protocol handler and white space.

mignaak do-not-reply at jboss.com
Thu Oct 30 06:24:43 EDT 2008


I have an issue with a soap protocol handler that works fine in jbossws 2.0.3.
Since 2.0.4 it has stopped working because it seems every white space character is stripped away from the message by the runtime.

This handler adds a header to the soap envelope and fills this header with lines of text separated with a newline character.

Any hint as to what is happening?

Many thanks

Here is the source code.

public class MefHandlerClient implements SOAPHandler {

    public Set getHeaders() {
        return null;
    }

    public boolean handleMessage(SOAPMessageContext smc) {
        try {
            Boolean outboundProperty = (Boolean) smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
            if (outboundProperty.booleanValue() == true) {
                SOAPMessage sm = smc.getMessage();
                SOAPPart part = sm.getSOAPPart();
                SOAPEnvelope envelope = part.getEnvelope();
                SOAPHeader sh = envelope.getHeader();
                if (sh == null)
                    sh = envelope.addHeader();
                QName n = new QName(
                        "http://schemas.xmlsoap.org/ws/2002/04/secext",
                        "BinarySecurityToken",
                        "wsse");
                envelope.addNamespaceDeclaration("wsse", "http://schemas.xmlsoap.org/ws/2002/04/secext");
                SOAPHeaderElement she = sh.addHeaderElement(n);
                QName id = new QName("Id");
                she.addAttribute(id, "SecurityToken");
                QName eType= new QName("EncodingType");
                she.addAttribute(eType, "wsse:Base64Binary");
                QName vType= new QName("ValueType");
                she.addAttribute(vType, "wsse:X509v3");
                InputStream firma = getClass().getClassLoader().getResourceAsStream("cert.pem");
                BufferedReader br = new  BufferedReader(new InputStreamReader(firma));
                String temp = br.readLine();
                while (temp != null) {
                    String temp2 = br.readLine();
                    if (!temp.contains("CERTIFICATE")) {
                        if (temp2 != null)
                            temp += System.getProperty("line.separator");
                        SOAPElement riga = she.addTextNode(temp);
                    }
                    temp = temp2;
                }
            }
        } catch(Throwable x) {
            System.out.println(x);
        }
        return true;
    }

    public boolean handleFault(SOAPMessageContext smc) {
        return true;
    }

    public void close(MessageContext messageContext) {
    }

}

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4185660#4185660

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4185660



More information about the jboss-user mailing list