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 is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to