You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Jervis Liu (JIRA)" <ji...@apache.org> on 2007/01/16 10:16:27 UTC

[jira] Resolved: (CXF-245) SOAPHandlerInterceptor handleMessage should be a no-op if no protocol handlers are registered.

     [ https://issues.apache.org/jira/browse/CXF-245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jervis Liu resolved CXF-245.
----------------------------

    Resolution: Fixed

> SOAPHandlerInterceptor handleMessage should be a no-op if no protocol handlers are registered.
> ----------------------------------------------------------------------------------------------
>
>                 Key: CXF-245
>                 URL: https://issues.apache.org/jira/browse/CXF-245
>             Project: CXF
>          Issue Type: Improvement
>          Components: JAX-WS Runtime
>    Affects Versions: 2.0-RC
>            Reporter: Andrea Smyth
>         Assigned To: Jervis Liu
>             Fix For: 2.0-RC
>
>
> Use this in SOAPHandlerInterceptor.handleMessage():
>      HandlerChainInvoker invoker = getInvoker(message);
>         if (invoker.getProtocolHandlers().isEmpty()) {
>             return;
>         }
> thus only manipulating the streams if absolutely necessary. 
> More importantly, we should ensure that the execution path is the same (aside from the invocation of the JAXWS procotol handlers) regardless how many JAXWS protocol  handlers are installed. 
> At the moment this is NOT the case:
> To verify, apply the above  change to a working copy. and run the addressing system test (MAPTest), with logging in the Server enabled (level >= INFO). The test passes, but 
> you'll notice that  - with the above change - an exception is thrown by the server when processing the partial response to  greetMeOneWay :
> 16-Nov-2006 13:59:47 org.apache.cxf.transport.http.JettyHTTPDestination flushHeaders
> WARNING: Response object is null
> 16-Nov-2006 13:59:47 org.apache.cxf.common.logging.LogUtils log
> INFO: Interceptor has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Could not write to XMLStreamWriter.
> 	at org.apache.cxf.interceptor.StaxOutInterceptor.handleMessage(StaxOutInterceptor.java:94)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:147)
> 	at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:57)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:147)
> 	at org.apache.cxf.ws.addressing.ContextUtils.rebaseResponse(ContextUtils.java:349)
> 	at org.apache.cxf.ws.addressing.MAPAggregator.mediate(MAPAggregator.java:183)
> 	at org.apache.cxf.ws.addressing.MAPAggregator.handleMessage(MAPAggregator.java:89)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:147)
> 	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:64)
> 	at org.apache.cxf.transport.http.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:286)
> 	at org.apache.cxf.transport.http.JettyHTTPDestination.doService(JettyHTTPDestination.java:259)
> 	at org.apache.cxf.transport.http.JettyHTTPDestination$2.handle(JettyHTTPDestination.java:119)
> 	at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
> 	at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
> 	at org.mortbay.http.HttpServer.service(HttpServer.java:909)
> 	at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
> 	at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
> 	at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
> 	at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
> 	at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
> 	at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
> Caused by: com.ctc.wstx.exc.WstxIOException: Response object is null
> 	at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1605)
> 	at com.ctc.wstx.sw.BaseStreamWriter.close(BaseStreamWriter.java:246)
> 	at org.apache.cxf.interceptor.StaxOutInterceptor.handleMessage(StaxOutInterceptor.java:83)
> 	... 20 more
> Caused by: java.io.IOException: Response object is null
> 	at org.apache.cxf.transport.http.JettyHTTPDestination.flushHeaders(JettyHTTPDestination.java:332)
> 	at org.apache.cxf.transport.http.JettyHTTPDestination$WrappedOutputStream.doFlush(JettyHTTPDestination.java:421)
> 	at org.apache.cxf.io.AbstractCachedOutputStream.flush(AbstractCachedOutputStream.java:87)
> 	at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:92)
> 	at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:184)
> 	at com.ctc.wstx.sw.BufferingXmlWriter.close(BufferingXmlWriter.java:165)
> 	at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1603)
> 	... 22 more
> 16-Nov-2006 13:59:47 org.apache.cxf.ws.addressing.ContextUtils rebaseResponse
> WARNING: SERVER_TRANSPORT_REBASE_FAILURE_MSG
> org.apache.cxf.interceptor.Fault: Could not write to XMLStreamWriter.
> 	at org.apache.cxf.interceptor.StaxOutInterceptor.handleMessage(StaxOutInterceptor.java:94)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:147)
> 	at org.apache.cxf.interceptor.MessageSenderInterceptor.handleMessage(MessageSenderInterceptor.java:57)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:147)
> 	at org.apache.cxf.ws.addressing.ContextUtils.rebaseResponse(ContextUtils.java:349)
> 	at org.apache.cxf.ws.addressing.MAPAggregator.mediate(MAPAggregator.java:183)
> 	at org.apache.cxf.ws.addressing.MAPAggregator.handleMessage(MAPAggregator.java:89)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:147)
> 	at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:64)
> 	at org.apache.cxf.transport.http.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:286)
> 	at org.apache.cxf.transport.http.JettyHTTPDestination.doService(JettyHTTPDestination.java:259)
> 	at org.apache.cxf.transport.http.JettyHTTPDestination$2.handle(JettyHTTPDestination.java:119)
> 	at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
> 	at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
> 	at org.mortbay.http.HttpServer.service(HttpServer.java:909)
> 	at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
> 	at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
> 	at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
> 	at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
> 	at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
> 	at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
> Caused by: com.ctc.wstx.exc.WstxIOException: Response object is null
> 	at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1605)
> 	at com.ctc.wstx.sw.BaseStreamWriter.close(BaseStreamWriter.java:246)
> 	at org.apache.cxf.interceptor.StaxOutInterceptor.handleMessage(StaxOutInterceptor.java:83)
> 	... 20 more
> Caused by: java.io.IOException: Response object is null
> 	at org.apache.cxf.transport.http.JettyHTTPDestination.flushHeaders(JettyHTTPDestination.java:332)
> 	at org.apache.cxf.transport.http.JettyHTTPDestination$WrappedOutputStream.doFlush(JettyHTTPDestination.java:421)
> 	at org.apache.cxf.io.AbstractCachedOutputStream.flush(AbstractCachedOutputStream.java:87)
> 	at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:92)
> 	at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:184)
> 	at com.ctc.wstx.sw.BufferingXmlWriter.close(BufferingXmlWriter.java:165)
> 	at com.ctc.wstx.sw.BaseStreamWriter.finishDocument(BaseStreamWriter.java:1603)
> 	... 22 more
> Without the change, the server flushes the partial response only once.
>   

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira