Hi,

Your approach isn't correct.

The error
org.apache.servicemix.nmr.api.ServiceMixException: Could not dispatchexchange. No matching endpoints.

is caused by different namespace used by your consumer and provider, the dispatch target is composited by namespace and service/endpoint name

If you directly route cxf bc consumer to cxf bc provider, the logic part of the wsdl used by your consumer and provider endpoint must be same, otherwise you need use some transform endpoint between consumer and provider to match the namespace.

Or as Kurt pointed out, use a cxfse proxy inside servicemix container to call cxf bc provider, but you can still keep external client, the flow looks like

external client ====(wsdl1 with namespace 1)===> cxf bc consumer==(wsdl1 with namespace 1)===>cxf se====(normal java object invocation inside cxf se impl)===> cxf se proxy====(wsdl2 with namespace 2)===(wsdl2 with namespace 2)===>cxf bc provider====> external service

Freeman

On 2011-5-7, at 上午12:22, pchakinala wrote:

Hi,
I am working with cxf bc provider and consumer to call Third Party Web
Service and my usecase flow is like below.


Client ---> Servicemix CXFBC Consumer --->Servicemix CXFBC Provider ---->
Thid Party Service.

As per the client requirement WSDL targetnamespace should be different for
CXF BC Consumer and CXF BC Provider.

CXF BC Consumer uses IHUBTPP.WSDL File and targetnamespace is
"http://www.planetsoft.com/tpp/";
CXF BC Provider uses TPP.WSDL File and targetnamesoace is "tpps"


To achieve this requirement i followed below steps.

1. Constructed 2 WSDL Files one for consumer and one for
provider.targetnamespace  is the only change in both of the WSDLs and
remaining  are same.

2.Created consumer Endpoint

Consumer Endpoint:
----------------
<cxfbc:consumer wsdl="classpath:IHUBTPP.wsdl" <!-- Its pointing to
IHUBTPP.WSDL -->

locationURI="https://localhost:9001/tpp-web/services/TPPService";
                   targetService="tpp:TPPServiceService"
                     targetInterface="tpp:TPPServiceSoapBinding"
                     targetEndpoint="TPPProcessPort1"
                                          delegateToJaas="false"
                                          useJBIWrapper="false"
                useSOAPEnvelope="false"
                                          x509="false">
<cxfbc:inInterceptors>

                        <bean id="wss4jIn"
class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
                         <constructor-arg>
                 <map>
                                                                        
                      <entry key="action" value="UsernameToken Signature"/>
                                
3.Created Provider Endpoint.
 ------------------------

<cxfbc:provider
wsdl="classpath:TPP.wsdl" <!-- Its pointing to TPP.WSDL -->
       locationURI="http://xyz:7001/tpp-web/services/TPPService";
                  service="tpp1:TPPServiceService"
       endpoint="TPPProcessPort1"
                useJBIWrapper="false"
                useSOAPEnvelope="false"
                
                 >
4. As per the requirement there is no security requirment at Thid Party Service.Thats reason i did not configure wss4jInterceptor for BC Provider.


Please update me whether my approach is correct or not.

Observed below exception with above configuration.If my approach is correct
please update me the root cause of this error.


Exception:
interceptor
org.apache.servicemix.cxfbc.interceptors.JbiInWsdl1Interceptor@c5659c
21:28:46,359 | WARN | vices/TPPService | NMR | 83 - org.apache.servicemix.nmr.core - 1.4.0 | Error processing exchange [
 id:        2a67cd4a-aa4a-42a7-b983-bbe3fb9ecad4
 mep:       InOut
 status:    Active
 role:      Consumer
 target:
PropertyMatchingReference[{SERVICE_NAME={http://www.planetsoft.com/tpp/ }TPPServiceService}]
 operation: {http://www.planetsoft.com/tpp/}process1122Response
 properties: [
     org.apache.servicemix.senderEndpoint =
{http://www.planetsoft.com/tpp/}TPPServiceService:TPPService
     javax.jbi.messaging.MessageExchange =
org.apache.servicemix.jbi.runtime.impl.InOutImpl@5c5ce3
     javax.jbi.messaging.sendSync = <null>
     javax.jbi.InterfaceName =
{http://www.planetsoft.com/tpp/}TPPServiceSoapBinding
     javax.jbi.transaction.jta = <null>
     org.apache.servicemix.correlationId =
2a67cd4a-aa4a-42a7-b983-bbe3fb9ecad4
     javax.jbi.ServiceName =
{http://www.planetsoft.com/tpp/}TPPServiceService
 ]
]

org.apache.servicemix.nmr.api.ServiceMixException: Could not dispatch
exchange. No matching endpoints.


Here attached WSDL,xbean.xml,error log Files.
Please Suggest.

Regards,
Praveen Chakinala
http://servicemix.396122.n5.nabble.com/file/n4376478/config.zip config.zip

--
View this message in context: 
http://servicemix.396122.n5.nabble.com/org-apache-servicemix-nmr-api-ServiceMixException-Could-not-dispatch-exchange-No-matching-endpoints-tp4376478p4376478.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

---------------------------------------------
Freeman Fang

FuseSource
Email:[email protected]
Web: fusesource.com
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com
Connect at CamelOne May 24-26
The Open Source Integration Conference








Reply via email to