[
https://issues.apache.org/jira/browse/CXF-4942?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13641844#comment-13641844
]
Aki Yoshida commented on CXF-4942:
----------------------------------
I think your interceptor should sit behind StaxOutInterceptor and get the
XMLStreamWriter content instead of directly touching the InputStream content.
This has probably something to do with the issue. BareOutInterceptor isn't in
WRITE, so it's not really determined where it is sitting in that phase. If
something else already touches the XMLStreamWriter, your interceptor will
probably end up with the bad sequencing of stax events.
Other than that, I don't know how this can happen.
Could you change the position and compare the result?
thanks.
aki
> XMLStreamException outbound message
> -----------------------------------
>
> Key: CXF-4942
> URL: https://issues.apache.org/jira/browse/CXF-4942
> Project: CXF
> Issue Type: Bug
> Components: Soap Binding
> Affects Versions: 2.7.0
> Environment: cxf 2.7.0
> rehl 6
> tomcat 7
> Reporter: Juan Carlos Román
> Priority: Critical
> Labels: XMLStreamException
> Attachments: gtechService.wsdl, sample messages.xml
>
>
> Hi,
> We build a webservice using CXF (2.7.0) that basically works with messages
> with a CDATA attribute...
> Recently we review the system's log and we encountered the following
> stacktrace:
> {code:xml}
> 2013-03-12 12:49:09,445 banking-api [1] INFO
> [com.pagosonline.ppp4.banking.api.webservices.gtech.impl.GTechServiceImpl] -
> rawResponse: <pagoResponse>
> <peticionId>3769927</peticionId>
> <codigoRespuesta>0000</codigoRespuesta>
> <codigoConvenio>3</codigoConvenio>
> <referenciaPago>3460120</referenciaPago>
> <valorFactura>00000000010928000</valorFactura>
> <fechaEfectiva>2013/03/12</fechaEfectiva>
> <numeroAutorizacion>15694</numeroAutorizacion>
> </pagoResponse>
> 2013-03-12 12:49:09,445 banking-api [1] INFO
> [com.pagosonline.ppp4.banking.api.webservices.interceptors.CDataXMLStreamWriter]
> - WritingCData<pagoResponse>
> <peticionId>3769927</peticionId>
> <codigoRespuesta>0000</codigoRespuesta>
> <codigoConvenio>3</codigoConvenio>
> <referenciaPago>3460120</referenciaPago>
> <valorFactura>00000000010928000</valorFactura>
> <fechaEfectiva>2013/03/12</fechaEfectiva>
> <numeroAutorizacion>15694</numeroAutorizacion>
> </pagoResponse>
> 2013-03-12 12:49:09,447 banking-api [1] WARNING
> [org.apache.cxf.phase.PhaseInterceptorChain] - Interceptor for
> {http://impl.gtech.webservices.api.banking.ppp4.pagosonline.com/}gtechService#{http://pagosonline.com}pagar
> has thrown exception, unwinding now; Caused by:
> org.apache.cxf.interceptor.Fault: Could not send Message.
> at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
> at
> org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:77)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
> at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
> at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:238)
> at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:222)
> at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:202)
> at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
> at
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:239)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:159)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:215)
> at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1359)
> at
> org.openspaces.pu.container.jee.stats.RequestStatisticsFilter.doFilter(RequestStatisticsFilter.java:58)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330)
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:478)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
> at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
> at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:941)
> at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409)
> at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:875)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
> at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
> at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
> at org.eclipse.jetty.server.Server.handle(Server.java:349)
> at
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)
> at
> org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:936)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:801)
> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224)
> at
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: org.eclipse.jetty.io.EofException
> at
> org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:921)
> at org.eclipse.jetty.http.HttpGenerator.complete(HttpGenerator.java:814)
> at
> org.eclipse.jetty.server.HttpConnection.commitResponse(HttpConnection.java:572)
> at
> org.eclipse.jetty.server.HttpConnection$Output.close(HttpConnection.java:993)
> at
> org.apache.cxf.transport.http.AbstractHTTPDestination$WrappedOutputStream.close(AbstractHTTPDestination.java:725)
> at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
> at
> org.apache.cxf.transport.http.AbstractHTTPDestination$BackChannelConduit.close(AbstractHTTPDestination.java:655)
> at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> ... 40 more
> Caused by: java.nio.channels.ClosedChannelException
> at
> sun.nio.ch.SocketChannelImpl.ensureWriteOpen(SocketChannelImpl.java:135)
> at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:357)
> at java.nio.channels.SocketChannel.write(SocketChannel.java:360)
> at
> org.eclipse.jetty.io.nio.ChannelEndPoint.gatheringFlush(ChannelEndPoint.java:354)
> at
> org.eclipse.jetty.io.nio.ChannelEndPoint.flush(ChannelEndPoint.java:292)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.flush(SelectChannelEndPoint.java:300)
> at
> org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:848)
> ... 47 more
> 2013-03-12 12:49:09,448 banking-api [1] WARNING
> [org.apache.cxf.phase.PhaseInterceptorChain] - Interceptor for
> {http://impl.gtech.webservices.api.banking.ppp4.pagosonline.com/}gtechService#{http://pagosonline.com}pagar
> has thrown exception, unwinding now; Caused by:
> org.apache.cxf.binding.soap.SoapFault: Error writing to XMLStreamWriter.
> at
> org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor$SoapOutEndingInterceptor.handleMessage(SoapOutInterceptor.java:288)
> at
> org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor$SoapOutEndingInterceptor.handleMessage(SoapOutInterceptor.java:270)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
> at
> org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:112)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:331)
> at
> org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:77)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271)
> at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
> at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:238)
> at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:222)
> at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:202)
> at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:137)
> at
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:158)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:239)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:159)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:215)
> at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1359)
> at
> org.openspaces.pu.container.jee.stats.RequestStatisticsFilter.doFilter(RequestStatisticsFilter.java:58)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330)
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:478)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
> at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
> at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:941)
> at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409)
> at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:875)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
> at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
> at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
> at org.eclipse.jetty.server.Server.handle(Server.java:349)
> at
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)
> at
> org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:936)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:801)
> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224)
> at
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: javax.xml.stream.XMLStreamException: No open start element, when
> trying to write end element
> at
> com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStreamWriter.java:1522)
> at
> com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure(BaseStreamWriter.java:1551)
> at
> com.ctc.wstx.sw.BaseNsStreamWriter.doWriteEndTag(BaseNsStreamWriter.java:648)
> at
> com.ctc.wstx.sw.BaseNsStreamWriter.writeEndElement(BaseNsStreamWriter.java:280)
> at
> org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor$SoapOutEndingInterceptor.handleMessage(SoapOutInterceptor.java:279)
> ... 43 more
> {code}
> This message caught our attention:
> {code:java}
> Caused by: javax.xml.stream.XMLStreamException: No open start element, when
> trying to write end element
> {code}
> (The response message don't have any special char)
> But after investigating we didn't found anything related... :(
> You have any idea about this behavior ?
> Thanks in advance,
> --
> Juan
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira