自从引入ESB后,系统之间再也不直接依赖。我负责的这块,主要是解决Webservice的问题。使系统A再也不直接依赖系统B的Webservice。
咱们选择的产品是Mule ESB。因此天然要使用Mule 建立一个Webservice代理,即系统A请求到ESB,ESB请求系统B。
准备工做:
环境:
windows 8
jdk 1.6
mule-standalone-3.5.0-M4
MuleStudio-for-win-32bit-3.5.0-201312091746
主要步骤:
一、新建一个Mule Project
二、建立一个流程
这两步很是easy,再也不赘述。操做结果:
三、编辑流程
(1)新建一个flow
打开gxpt_test_esb_1.0.mflow,拖一个flow scope 进去。命名为HttpProxyService。
(2)加入HTTP Endpoint
(3)为这个Webservice建立一个client
加入一个SOAP Component到http endpoint的前面,编辑它的属性,设置operation为proxy client
(4)建立一个真正的代理服务
也可以将该文件放在项目的目录中。如src/
最后,完整的flow应该是如下这个样子:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.4.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd">
<flow name="HttpProxyService" doc:name="HttpProxyService">
<http:inbound-endpoint exchange-pattern="request-response" address="http://192.168.24.12:8888/UserManager" doc:name="HTTP"/>
<!-- wsdlLocation="service/UserManagerBean.wsdl" 也可以使用该属性替换掉url-->
<cxf:proxy-service namespace="http://ejb.jialin.com/" service="UserManagerBean" payload="body" wsdlLocation="http://192.168.24.46:8080/test_server_webservice/UserManagerBean?wsdl" doc:name="SOAP"/>
<cxf:proxy-client payload="body" enableMuleSoapHeaders="true" doc:name="SOAP"/>
<http:outbound-endpoint exchange-pattern="request-response" method="POST" address="http://192.168.24.46:8080/test_server_webservice/UserManagerBean" doc:name="HTTP"/>
</flow>
<flow name="gxpt_test_esb_1.0Flow1" doc:name="gxpt_test_esb_1.0Flow1"/>
</mule>
OK,接下你可以run mule server,在浏览器中输入wsdl地址。看一下结果啦。
假设输入代理地址和直接输入目标地址。显示的wsdl同样,说明配置正确。
小结:
在这篇文章中,我介绍了怎样使用mule建立一个Webservice代理,不需要使用不论什么转换器。也不需要写一行代码。全然是配置完毕的。
在兴许文章中将继续聊Mule ESB,敬请关注。