Hi,

I have axis.jar (1.2.1) and saaj-impl.jar(1.3) in a same web application deployed in Tomcat 5.5.17. axis MessageFactoryImpl (org.apache.axis.soap.MessageFactoryImpl) gets preference over saaj-impl implementation (com.sun.xml.messaging.saaj.soap.MessageFactoryImpl) during the run time. I am facing issues due to this and need to use saaj implementation when I create SOAP messages.

My problem: there is no SOAP Header available when I try to put the signature in Tomcat 5.5. I am using “xmlsec-1.3.0”. But If I try to add the header just after creating the messages ( “MessageFactory mf = MessageFactory.newInstance()”) using “header.addHeaderElement” is says header is available.

 

I have no issue in Tomcat 5.0.x and it uses sun implementation for the same app. Only in Tomcat 5.5.x it is looking for axis version even if saaj-impl.jar is available.

 

This is how I am creating the signature.

 

Element soapHeaderElement = (Element) ((Element) document

                                                            .getFirstChild()).getElementsByTagNameNS(

                                                            "http://schemas.xmlsoap.org/soap/envelope/", "Header")

                                                            .item(0);

sig = new XMLSignature(document, baseURI, signatureMethod);

 

soapHeaderElement.appendChild(sig.getElement());

 

As of my understanding I could try in  two ways. Either have saaj-impl message factory implementation loaded or have soap header available if axis version is getting used. Still I didn’t get any idea from Tomcat user community for the option 1.  If someone could shed any light on this it would be really helpful.

 

Note: I added a dummy element for the header in 5.5.17 environment but then I got an error saying “content not allowed in prolog…”

 

Thank you

Nilantha

Reply via email to