You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Dennis Kieselhorst (JIRA)" <ji...@apache.org> on 2017/05/05 09:05:04 UTC

[jira] [Commented] (CXF-1548) Bug in Method handleMessage of AbstractEndpointSelectionInterceptor class

    [ https://issues.apache.org/jira/browse/CXF-1548?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15997963#comment-15997963 ] 

Dennis Kieselhorst commented on CXF-1548:
-----------------------------------------

Can you elaborate a bit more on your usecase? Endpoints should have been set by MultipleEndpointObserver, in which case are they missing?

> Bug in Method handleMessage of AbstractEndpointSelectionInterceptor class
> -------------------------------------------------------------------------
>
>                 Key: CXF-1548
>                 URL: https://issues.apache.org/jira/browse/CXF-1548
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.3
>         Environment: CXF 2.03/2.05
> JDK 6
>            Reporter: Hubert zhang
>
> Please see the source code:
> public void handleMessage(Message message) throws Fault {
>         Exchange ex = message.getExchange();
>         Set<Endpoint> endpoints =
> CastUtils.cast((Set)ex.get(MultipleEndpointObserver.ENDPOINTS));
>         Endpoint ep = selectEndpoint(message, endpoints);
>         if (ep == null) {
>             return;
>         }
>         ......
> } 
> Here if Endpoint  can not be found, just return null , it is not correct.  It should throw a SoapFault, but coz Endpoint  can not be found, then FaultObserver  also can not be accessed, it is a dead lock.
> In such situation,  when you run your application, you can find such message exchanged between client and server:
> Outbound Message:
> --------------------------------------
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/
> envelope/"><soap:Header><version xmlns="http://apache.org/
> callback">789</version></soap:Header><soap:Body><callback_message
> xmlns="http://apache.org/callback">z00118703</callback_message></
> soap:Body></soap:Envelope>--------------------------------------
> 2008-4-24 17:31:59 org.apache.cxf.interceptor.LoggingInInterceptor
> handleMessage
> 信息: Inbound Message
> --------------------------------------
> Headers: {transfer-encoding=[chunked], Server=[Jetty(6.1.5)]}
> Message:
> -------------------------------------- 
> See the response message is empty,  that will cause such exception:
> 2008-4-25 9:19:30 org.apache.cxf.phase.PhaseInterceptorChain doIntercept
> 信息: Interceptor has thrown exception, unwinding now
> org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
> 	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:187)
> 	at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:56)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
> 	at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:402)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1948)
> 	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1791)
> 	at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
> 	at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:157)
> 	at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
> 	at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:575)
> 	at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> 	at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:207)
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
> 	at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:205)
> 	at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
> 	at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
> 	at $Proxy50.serverSayHi(Unknown Source)
> In common way , client should get "server does not exist " error ,but now ,it get "Unexpected EOF in prolog" error!



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)