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.