You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by "Jonathan Whitall (JIRA)" <ji...@apache.org> on 2010/06/21 16:26:23 UTC

[jira] Commented: (AXIS2-4663) SAAJ implementation classes do not overrride appendChild(org.w3c.dom.Node) method

    [ https://issues.apache.org/jira/browse/AXIS2-4663?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12880846#action_12880846 ] 

Jonathan Whitall commented on AXIS2-4663:
-----------------------------------------

I am also experiencing this problem with WebSphere 6.1.0.29. The Sun SAAJ RI is, ultimately, not an option for me.

By default, CXF comes with the Sun reference implementation for SAAJ which I had included in my WAS application (running with a parent last classloader). This didn't work straight out-of-the-box because the Sun RI is hardwired to the Sun JRE's internal Xerces implementation (which does not come with the IBM JRE). When I included the Sun JAXP RI in my app, the problem went away, though now I was using the notoriously slow Sun StAX implementation. I fixed this by deleting the standard JAXP entries in META-INF/services in the JAXP RI.

So, all was going fine until we needed to do some SAML 2.0 processing. When I included OpenSAML 2, it doesn't even try to be compatible with the Sun JAXP RI, citing too many bugs to work around. It will, in fact, inspect the parser implementation and throw an exception if you attempt to use it. So then I tried ditching the SAAJ RI and replacing it with the Axis2 SAAJ implementation... and immediately ran into this problem.

The issue appears to stem from CXF's assumption that factory.createMessage() creates an empty DOM tree, when in fact Axis creates an Envelope with an empty Body tag. I imagine that overriding appendChild(Node) in SOAPPartImpl would solve the problem, but perhaps that breaks the spec? I suppose I could use my own factory implementation as a workaround, but I'm not exactly sure what would need to change.

Thoughts?

> SAAJ implementation classes do not overrride appendChild(org.w3c.dom.Node) method
> ---------------------------------------------------------------------------------
>
>                 Key: AXIS2-4663
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4663
>             Project: Axis2
>          Issue Type: Bug
>          Components: saaj
>    Affects Versions: 1.5.1
>         Environment: Websphere 6.1.0.29
>            Reporter: Brice FINES
>             Fix For: 1.6
>
>
> This bug was supposedly fixed in nightly builds, but almost 2 years later it still affects official releases.
> See https://issues.apache.org/jira/browse/AXIS2-3808 for more details.
> This bug prevents from using CXF versions above 2.2 in a Websphere environment (when making use of SAAJ interceptors).
> It would be great to see it fixed in version 1.6.
> Meanwhile, is there a way to access Axis2 java nightly source to see how it is fixed?
> Thanks in advance.
> Regards
> org.apache.cxf.common.logging.LogUtils <doLog> Interceptor for {http://xxxxxxxxxxxxxxxxxxxxx}yyyyyyyyyyyy has thrown exception, unwinding now
> org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted. 
> 	at org.apache.axiom.om.impl.dom.ParentNode.insertBefore(ParentNode.java:224)
> 	at org.apache.axiom.om.impl.dom.NodeImpl.appendChild(NodeImpl.java:240)
> 	at org.apache.axis2.saaj.SOAPPartImpl.appendChild(SOAPPartImpl.java:989)
> 	at org.apache.cxf.staxutils.W3CDOMStreamWriter.setChild(W3CDOMStreamWriter.java:114)
> 	at org.apache.cxf.staxutils.W3CDOMStreamWriter.newChild(W3CDOMStreamWriter.java:104)
> 	at org.apache.cxf.staxutils.W3CDOMStreamWriter.writeStartElement(W3CDOMStreamWriter.java:132)
> 	at org.apache.cxf.staxutils.StaxUtils.writeStartElement(StaxUtils.java:489)
> 	at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:427)
> 	at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:415)
> 	at org.apache.cxf.staxutils.StaxUtils.copy(StaxUtils.java:397)
> 	at org.apache.cxf.binding.soap.saaj.SAAJInInterceptor.handleMessage(SAAJInInterceptor.java:111)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.getSOAPMessage(WSS4JInInterceptor.java:127)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:161)
> 	at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:78)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
> 	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110)
> 	at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
> 	at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:423)
> 	at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:178)
> 	at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
> 	at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
> 	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1146)
> 	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1087)
> 	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
> 	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
> 	at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
> 	at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
> 	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
> 	at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
> 	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
> 	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
> 	at org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174)
> 	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
> 	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
> 	at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
> 	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
> 	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
> 	at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
> 	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
> 	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
> 	at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
> 	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
> 	at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
> 	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:837)
> 	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:680)
> 	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:588)
> 	at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:525)
> 	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3548)
> 	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:269)
> 	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:818)
> 	at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1478)
> 	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:126)
> 	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
> 	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
> 	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)
> 	at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
> 	at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
> 	at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
> 	at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
> 	at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
> 	at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
> 	at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196)
> 	at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:751)
> 	at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)
> 	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org