Hi,

 

I tried to incorporate the WS-Security (using Rampart 1.3 module) feature to
my existing set of web-services. I am using AXIS 2 1.3. The java classes are
generated using WSDL2JAVA. 

 

I get the following error in server logs while serialization of the certain
responses (all those which contain many "X" nodes under the "X-List" node)
node since the time WS-Security has been enabled:

 

****************************************************************************
************************************************

 

12:22:22,344 ERROR [OMSourcedElementImpl] Could not get parser from data
source for element 

{http://services.mydomain.com/ws/schema/classificationservice}getInstructorL
istResponse

javax.xml.stream.XMLStreamException: the prefix ==>  Already exists for
namespace ==> 

http://services.mydomain.com/ws/schema/common/credentials

        at
org.apache.axis2.databinding.utils.writer.MTOMAwareOMBuilder.getOMNamespace(
MTOMAwareOMBuilder.java:72)

        at
org.apache.axis2.databinding.utils.writer.MTOMAwareOMBuilder.writeStartEleme
nt(MTOMAwareOMBuilder.java:92)

        at
com.mydomain.services.ws.schema.common.credentials.Credentials.serialize(Cre
dentials.java:177)

        at
com.mydomain.services.ws.schema.common.credentials.CredentialsList.serialize
(CredentialsList.java:170)

        at
com.mydomain.services.ws.schema.common.instructor.Instructor.serialize(Instr
uctor.java:626)

        at
com.mydomain.services.ws.schema.common.instructor.Instructors.serialize(Inst
ructors.java:169)

        at
com.mydomain.services.ws.schema.classificationservice.GetInstructorListRespo
nse.serialize

(GetInstructorListResponse.java:226)

        at
com.mydomain.services.ws.schema.classificationservice.GetInstructorListRespo
nse$1.serialize

(GetInstructorListResponse.java:128)

        at
org.apache.axis2.databinding.ADBDataSource.getReader(ADBDataSource.java:96)

        at
org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourced
ElementImpl.java:129)

        at
org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElem
entImpl.java:152)

        at
org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getFirstOMChild(OMSourced
ElementImpl.java:755)

        at
org.apache.axiom.om.impl.llom.OMNavigator._getFirstChild(OMNavigator.java:14
1)

        at
org.apache.axiom.om.impl.llom.OMNavigator.updateNextNode(OMNavigator.java:11
3)

        at
org.apache.axiom.om.impl.llom.OMNavigator.next(OMNavigator.java:96)

        at
org.apache.axiom.om.impl.llom.OMStAXWrapper.updateNextNode(OMStAXWrapper.jav
a:1007)

        at
org.apache.axiom.om.impl.llom.OMStAXWrapper.updateLastNode(OMStAXWrapper.jav
a:998)

        at
org.apache.axiom.om.impl.llom.OMStAXWrapper.next(OMStAXWrapper.java:923)

        at
org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:153)

        at org.apache.axiom.om.impl.dom.NodeImpl.build(NodeImpl.java:447)

        at
org.apache.axiom.om.impl.dom.DocumentImpl.build(DocumentImpl.java:479)

        at
org.apache.rampart.util.Axis2Util.getDocumentFromSOAPEnvelope(Axis2Util.java
:130)

        at
org.apache.rampart.RampartMessageData.<init>(RampartMessageData.java:150)

        at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:58)

        at
org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:64)

        at org.apache.axis2.engine.Phase.invoke(Phase.java:292)

        at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:212)

        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:377)

        at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLo
gic

(AbstractInOutSyncMessageReceiver.java:45)

        at
org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageRe
ceiver.java:96)

        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)

        at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HT
TPTransportUtils.java:275)

        at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:290)

        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)

        at
com.mydomain.util.log.performance.filter.RequestIdentifierFilter.doFilter(Re
questIdentifierFilter.java:60)

        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)

        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)

        at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterI
nternal

(OpenSessionInViewFilter.java:198)

        at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestF
ilter.java:75)

        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)

        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)

        at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.ja
va:96)

        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)

        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)

        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:230)

        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:175)

        at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssoci
ationValve.java:179)

        at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:
84)

        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128
)

        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104
)

        at
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnecti
onValve.java:156)

        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)

        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)

        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http
11Protocol.java:580)

        at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

        at java.lang.Thread.run(Thread.java:595)

 

****************************************************************************
************************************************

 

Consequently, the error received on in the web-service response is:

 

****************************************************************************
************************************************

 

org.apache.axis2.AxisFault: Error in extracting message properties

                at
org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:70)

                at org.apache.axis2.engine.Phase.invoke(Phase.java:292)

                at
org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:212)

                at
org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:377)

                at
org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.invokeBusinessLo
gic

(AbstractInOutSyncMessageReceiver.java:45)

                at
org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageRe
ceiver.java:96)

                at
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)

                at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HT
TPTransportUtils.java:275)

                at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)

                at
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)

                at
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:290)

                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)

                at
com.mydomain.util.log.performance.filter.RequestIdentifierFilter.doFilter(Re
questIdentifierFilter.java:60)

                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)

                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)

                at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterI
nternal

(OpenSessionInViewFilter.java:198)

                at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestF
ilter.java:75)

                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)

                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)

                at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.ja
va:96)

                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)

                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)

                at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:230)

                at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:175)

                at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssoci
ationValve.java:179)

                at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:
84)

                at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128
)

                at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104
)

                at
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnecti
onValve.java:156)

                at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)

                at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)

                at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)

                at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http
11Protocol.java:580)

                at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

                at java.lang.Thread.run(Thread.java:595)

Caused by: org.apache.rampart.RampartException: Error in extracting message
properties

                at
org.apache.rampart.RampartMessageData.&lt;init>(RampartMessageData.java:290)

                at
org.apache.rampart.MessageBuilder.build(MessageBuilder.java:58)

                at
org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:64)

                ... 35 more

Caused by: org.apache.ws.security.WSSecurityException: Error in converting
SOAP Envelope to Document; nested exception is: 

                org.apache.axiom.om.OMException:
javax.xml.stream.XMLStreamException

                at
org.apache.rampart.util.Axis2Util.getDocumentFromSOAPEnvelope(Axis2Util.java
:157)

                at
org.apache.rampart.RampartMessageData.&lt;init>(RampartMessageData.java:150)

                ... 37 more

Caused by: org.apache.axiom.om.OMException:
javax.xml.stream.XMLStreamException

                at
org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:239)

                at
org.apache.axiom.om.impl.dom.NodeImpl.build(NodeImpl.java:447)

                at
org.apache.axiom.om.impl.dom.DocumentImpl.build(DocumentImpl.java:479)

                at
org.apache.rampart.util.Axis2Util.getDocumentFromSOAPEnvelope(Axis2Util.java
:130)

                ... 38 more

Caused by: javax.xml.stream.XMLStreamException

                at
org.apache.axiom.om.impl.llom.OMStAXWrapper.updateLastNode(OMStAXWrapper.jav
a:1000)

                at
org.apache.axiom.om.impl.llom.OMStAXWrapper.next(OMStAXWrapper.java:923)

                at
org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:153)

 

****************************************************************************
************************************************

 

I debugged the code and observed that, in the serialize method of the XML
node POJO (generated by WSDL2JAVA), the "MTOMAwareXMLStreamWriter xmlWriter"
parameter gets an instance of MTOMAwareOMBuilder if WS-Security is enabled.

 

Whereas, without WS-Security it gets an instance of
org.apache.axis2.databinding.utils.writer.MTOMAwareXMLSerializer which uses
MTOMXMLStreamWriter which in turn uses com.ctc.wstx.sw.SimpleNsStreamWriter
to serialize the response.

 

I also tried using AXIS 1.4 without any success.

 

Any idea how can this problem can be solved? Is there a way to let Rampart
know which serializer should be used? Am I missing any configuration details
of Rampart? 

 

Darshan Jawalebhoi

http://curiousdeveloper.blogspot.com

 


DISCLAIMER
==========
This e-mail may contain privileged and confidential information which is the 
property of Persistent Systems Ltd. It is intended only for the use of the 
individual or entity to which it is addressed. If you are not the intended 
recipient, you are not authorized to read, retain, copy, print, distribute or 
use this message. If you have received this communication in error, please 
notify the sender and delete all copies of this message. Persistent Systems 
Ltd. does not accept any liability for virus infected mails.

Reply via email to