CXF (se proxy) routing issues with same servicenames
-----------------------------------------------------

                 Key: SM-1431
                 URL: https://issues.apache.org/activemq/browse/SM-1431
             Project: ServiceMix
          Issue Type: Bug
          Components: servicemix-cxf-se
    Affects Versions: 3.3
         Environment: standalone client
 { (ESB) ======> cxf bc consumer===> cxf se (the se has proxy 
of cxf bc provider endpoint) =========> cxf bc provider(endpoint, endpointStd)  
(/ESB) }
===========> standalone server  
            Reporter: Brice
         Attachments: 
20080630-BUG-routingServiceWithSeveralInterfaces-calculatrice.zip, 
20080630-calculator-client-and-Server.zip

Here is the full forum discussion thread: 
http://www.nabble.com/CXF-routing-issues-with-same-servicenames-ts18157214.html
*******************************************************************************************************************************
 
*******************************************************************************************************************************
 

Hi all

I keep working on my proxy, I have a new problem.
I have one external service with 3 porttypes (wsdl with 3 interfaces/3 
endpoints).
To access it, I created three internal endpoints with CXF BC provider.
one service=myservice, interface=myinterface1, endpoint=myendpoint1
service=myservice, interface=myinterface2, endpoint=myendpoint2

My proxy (and so do I btw) wants to send a message to service=myservice, 
interface=myinterface2, endpoint=myendpoint2
but in fact it goes to service=myservice, interface=myinterface1, 
endpoint=myendpoint1.

I checked in my JaxWsClientPoroxy, and in the BindingOperationInfo oi, I have 
my service/endpoints that has a name for the endpoint (by the way it is a 
Qname, but it is my enpdpointName + my namespace).
In the MessageExchange sent by the messagesenderInterceptor, i can see the 
tables containing the endpoint (javax.xml.ws.wsdl.port = myendpoint2)
Then in the NMR I read the servicename, interfaceName... AND after the 
"resolveAdress", i get a WRONG endpointName (endpoint1 for example). Then the 
cxf provider reads the binding and doesn't find my operation (interface2) amont 
the interface1 operations.

I tried to remove the "serviceName" from the proxy configuration and leave only 
the interfaceName so the interfacename will be resolved (btw why not adding a 
routing method with [servicename + interface] or just checking if the interface 
is implemented by the endpoint chosen?), but xbean.xml and its XSD doesn't 
allow to remove the service.
I don't know what to do (except removing the 2 other endpoints but I will need 
them, and I can't change the WSDL). 

-*****************************************************************
******************************************************************************************
.well I don't know yet how to create a test file, I am trying to understand how 
you do with your tests in the components. 
But I can send you my sources for SA creation and my calculator server and 
client (the libs are in my M2_REPO, see classpath). 

To see how it fails: 
Deploy the sa, launch the server then client. 
The Exception thrown speaks about java.lang.nullpointerexception 
The messsage header intercepted has those routing information: 
interface: calculatorExt 
service: calculatorExtEndpoint 
endpoint:endpointStd 

While in the xbean of my servicemix se, the proxy property requires: 
interface: calculatorExt 
service: calculatorExtEndpoint 
endpoint:endpoint

******************************************************************************************
******************************************************************************************


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 

******************************************************************************************
******************************************************************************************

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 


-- 
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