论坛首页 Java企业应用论坛

在ServiceMix中将cxfbc:consumer进行路由

浏览 2850 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-10-15  
SOA
通过使用ServiceMix-cxf-bc,提供了如下一个cxfbc的服务消费者与提供者,
从而将外部Web Service注册到esb中。

<cxfbc:consumer wsdl="mycalculate.wsdl"
service="calculate:CalculateService"
endpoint="soap"
targetService="calculate:CalculateService"
targetEndpoint="calculate:Calculate"
locationURI="http://myserver:8000/Calculate"/>

<cxfbc:provider wsdl="mycalculate.wsdl"
service="calculate:CalculateService"
endpoint="calculate:Calculate"
locationURI="http://myserver:8080/services/Calculate"/>

现在, 我已实现了如下流程:

外部客户端 --> cxf consumer --> cxf provider --> 外部web Service

如果我要实现以下流程:
外部客户端 --> cxf consumer--> 路由 --> cxf provider --> 外部web Service
则应该怎么做啦?

   发表时间:2010-10-26  
只需要配置一个eip的sa集合就可以,具体的su下面的xbean.xml中的内容如下:
<eip:content-based-router service="hello:HelloService"
endpoint="endpoint">
<eip:rules>
<eip:routing-rule>
<eip:predicate>
<eip:xpath-predicate xpath="count(//test) = 1"/>
</eip:predicate>
<eip:target>
<eip:exchange-target service="hello:HelloService" endpoint="hello:HelloServicePortProxy2"/>
</eip:target>
</eip:routing-rule>
<eip:routing-rule>
<eip:target>
<eip:exchange-target service="hello:HelloService" endpoint="hello:HelloServicePortProxy" />
</eip:target>
</eip:routing-rule>
</eip:rules>
</eip:content-based-router>

在这里要注意一点,如果通过客户端访问时,方法参数如果是xml格式的字符串,则会让xpath中的表达式不起作用。
0 请登录后投票
   发表时间:2011-05-13  
为什么我的路由规则就是无效,能讲讲这个路由规则的语法吗,比如我暴露的方法是sayHello(String name)
调用的soap 请求消息如下
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ws.kentop.net" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<q0:sayHello>
  <q0:name>alan</q0:name>
  </q0:sayHello>
  </soapenv:Body>
  </soapenv:Envelope>

EIP的xbean.xml如下
<eip:content-based-router service="ws:routeService"
endpoint="ws:routeEndpoint">
<eip:rules>
<eip:routing-rule>
<eip:predicate>
<eip:xpath-predicate XPath="count(//sayHello[name='alan']) = 1"/>
</eip:predicate>
<eip:target>
<eip:exchange-target service="ws:HelloWorldService"
endpoint="ws:HelloWorld" />
</eip:target>
</eip:routing-rule>
<eip:routing-rule>
<eip:target>
<eip:exchange-target service="test:HelloWorldService"
endpoint="test:HelloWorldService" />
</eip:target>
</eip:routing-rule>
</eip:rules>
</eip:content-based-router>

无论我的name是什么值都只会路由到默认的路由上去
能把你的项目发我看看吗,无线感激 7141438@qq.com
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics