You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicemix.apache.org by Freeman Fang <fr...@gmail.com> on 2008/07/01 06:56:33 UTC

Re: CXF routing issues with same servicenames

Hi,

As you said, you encounter problem when send message from cxf se to cxf 
bc provider, right?
But I encounter problem earlier from your attachment, the exception 
thrown when from standalone cxf client to cxf bc consumer, the stacktrace is
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: MEP not 
found
    at 
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:199)
    at $Proxy37.add(Unknown Source)
    at 
com.mycompany.brice.calculator.Calculator_Endpoint_Client.main(Calculator_Endpoint_Client.java:56)
Caused by: org.apache.cxf.binding.soap.SoapFault: MEP not found
    at 
org.apache.cxf.binding.soap.interceptor.Soap12FaultInInterceptor.handleMessage(Soap12FaultInInterceptor.java:104)
    at 
org.apache.cxf.binding.soap.interceptor.Soap12FaultInInterceptor.handleMessage(Soap12FaultInInterceptor.java:46)
    at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
    at 
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:96)
    at 
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:65)
    at 
org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)
    at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:449)
    at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1988)
    at 
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1824)
    at 
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:583)
    at 
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
    at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296)
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242)
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
    at 
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178)
    ... 2 more
Did you see it before?

Freeman

Fullocto wrote:
> Well in fact, i want to send to endpoint="endpoint" as specified in my
> xbean.xml but unfortunately the message is sent to endpointStd.
>
>
> Freeman Fang wrote:
>   
>> Hi Brice,
>>
>> In your proxy configuration
>> <cxfse:proxy service="calculatorExt:CalculatorExtEndpoint" 
>> interfaceName="CalculatorExt" endpoint="endpoint" context="#context" 
>> type="com.mycompany.brice.calculatorext.CalculatorExt" />
>> It works, right?
>> And  you want send messa ge to endpointStd, so you specify the 
>> endpoint="endpointStd",  but that's not enough, also the type attribute 
>> should be "com.mycompany.brice.calculatorext.CalculatorExtStd", as I 
>> mentioned int the previuse mail
>>
>> "Also, you should specify the "type" attribute correctly, which should 
>> be the client stub for the interface (portype in the wsdl) you want to 
>> send message to. "
>>
>> You can generate class 
>> com.mycompany.brice.calculatorext.CalculatorExtStd from the wsdl which 
>> have the CalculatorExtStd porttype.
>>
>> Freeman
>>
>>
>> Fullocto wrote:
>>     
>>> Freeman Fang wrote:
>>>   
>>>       
>>>> The wsdl you append in the attachment is the one you mentioned have 
>>>> three endpoint?
>>>>
>>>>     
>>>>         
>>> No in fact I created a light version I can share on internet, and two
>>> endpoints were enough to create the problem.
>>>
>>>
>>> Freeman Fang wrote:
>>>   
>>>       
>>>> Do I understand your scenario correctly?
>>>> standalone client ======> cxf bc consumer===> cxf se (the se has proxy 
>>>> of cxf bc provider) =========> cxf bc provider ===========> standalone 
>>>>
>>>>     
>>>>         
>>> Exactly
>>>
>>> standalone client ======> cxf bc consumer===> cxf se (the se has proxy 
>>> of cxf bc provider endpoint1) =========> cxf bc provider(endpoint1,
>>> endpoint2) ===========> standalone 
>>>
>>> Actually, in my files endpoint1= endpoint, and endpoint2=endpointStd
>>>   
>>>       
>>
>>     
>
>   


Re: CXF routing issues with same servicenames

Posted by Freeman Fang <fr...@gmail.com>.
Hi Brice,

Finally, I reproduce the problem you encounter,

I get the exception as below
java.lang.NullPointerException
        at 
org.apache.servicemix.cxfbc.CxfBcProvider.process(CxfBcProvider.java:171)
        at 
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:585)
        at 
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:536)
        at 
org.apache.servicemix.common.AsyncBaseLifeCycle.onMessageExchange(AsyncBaseLifeCycle.java:490)
        at 
org.apache.servicemix.common.SyncLifeCycleWrapper.onMessageExchange(SyncLifeCycleWrapper.java:60)
        at 
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
        at 
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172)
        at 
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:168)
        at 
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)

It looks like a bug, would you please fill a jira to track it, and 
append your testcase and our mail conversation?

Thanks

Freeman

Freeman Fang wrote:
> Hi,
>
> As you said, you encounter problem when send message from cxf se to 
> cxf bc provider, right?
> But I encounter problem earlier from your attachment, the exception 
> thrown when from standalone cxf client to cxf bc consumer, the 
> stacktrace is
> Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: MEP 
> not found
>    at 
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:199)
>    at $Proxy37.add(Unknown Source)
>    at 
> com.mycompany.brice.calculator.Calculator_Endpoint_Client.main(Calculator_Endpoint_Client.java:56) 
>
> Caused by: org.apache.cxf.binding.soap.SoapFault: MEP not found
>    at 
> org.apache.cxf.binding.soap.interceptor.Soap12FaultInInterceptor.handleMessage(Soap12FaultInInterceptor.java:104) 
>
>    at 
> org.apache.cxf.binding.soap.interceptor.Soap12FaultInInterceptor.handleMessage(Soap12FaultInInterceptor.java:46) 
>
>    at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221) 
>
>    at 
> org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:96) 
>
>    at 
> org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:65) 
>
>    at 
> org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34) 
>
>    at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221) 
>
>    at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:449)
>    at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1988) 
>
>    at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1824) 
>
>    at 
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
>    at 
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:583)
>    at 
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) 
>
>    at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221) 
>
>    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296)
>    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242)
>    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
>    at 
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178)
>    ... 2 more
> Did you see it before?
>
> Freeman
>
> Fullocto wrote:
>> Well in fact, i want to send to endpoint="endpoint" as specified in my
>> xbean.xml but unfortunately the message is sent to endpointStd.
>>
>>
>> Freeman Fang wrote:
>>  
>>> Hi Brice,
>>>
>>> In your proxy configuration
>>> <cxfse:proxy service="calculatorExt:CalculatorExtEndpoint" 
>>> interfaceName="CalculatorExt" endpoint="endpoint" context="#context" 
>>> type="com.mycompany.brice.calculatorext.CalculatorExt" />
>>> It works, right?
>>> And  you want send messa ge to endpointStd, so you specify the 
>>> endpoint="endpointStd",  but that's not enough, also the type 
>>> attribute should be 
>>> "com.mycompany.brice.calculatorext.CalculatorExtStd", as I mentioned 
>>> int the previuse mail
>>>
>>> "Also, you should specify the "type" attribute correctly, which 
>>> should be the client stub for the interface (portype in the wsdl) 
>>> you want to send message to. "
>>>
>>> You can generate class 
>>> com.mycompany.brice.calculatorext.CalculatorExtStd from the wsdl 
>>> which have the CalculatorExtStd porttype.
>>>
>>> Freeman
>>>
>>>
>>> Fullocto wrote:
>>>    
>>>> Freeman Fang wrote:
>>>>        
>>>>> The wsdl you append in the attachment is the one you mentioned 
>>>>> have three endpoint?
>>>>>
>>>>>             
>>>> No in fact I created a light version I can share on internet, and two
>>>> endpoints were enough to create the problem.
>>>>
>>>>
>>>> Freeman Fang wrote:
>>>>        
>>>>> Do I understand your scenario correctly?
>>>>> standalone client ======> cxf bc consumer===> cxf se (the se has 
>>>>> proxy of cxf bc provider) =========> cxf bc provider ===========> 
>>>>> standalone
>>>>>             
>>>> Exactly
>>>>
>>>> standalone client ======> cxf bc consumer===> cxf se (the se has 
>>>> proxy of cxf bc provider endpoint1) =========> cxf bc 
>>>> provider(endpoint1,
>>>> endpoint2) ===========> standalone
>>>> Actually, in my files endpoint1= endpoint, and endpoint2=endpointStd
>>>>         
>>>
>>>     
>>
>>   
>
>