近公司需要寫這樣一個(gè)功能。也就是需要一個(gè)esb消息總線。初步的功能是提供webservice的消息管理以后還會(huì)增加很多的功能。。以前本來在soa esb上面的東西就是個(gè)空白。在Google上找了一天最后由我自己覺得用mule2.1.2。讓后就瘋狂的找些好的帖子。希望能夠很快的入門。但發(fā)現(xiàn)不是那么一回事。找到的很多都是1.X的版本。2.1.2 的少得很。經(jīng)過近半周的研究。。終于自己寫了一個(gè)小的test。貼上來給新入門的朋友希望有幫助。深入的研究以后還會(huì)繼續(xù)。
配置文件:mule_config.xml
一個(gè)簡單的 接口 為了先跑同就這樣把。
MuleService.java
MuleServiceImp.java
啟動(dòng)服務(wù):
測(cè)試
配置文件:mule_config.xml
- <?xml?version="1.0"?encoding="UTF-8"?> ??
- <mule?xmlns="http://www.mulesource.org/schema/mule/core/2.1"??
- ??????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"??
- ??????xmlns:spring="http://www.springframework.org/schema/beans"??
- ??????xmlns:vm="http://www.mulesource.org/schema/mule/vm/2.1"??
- ??????xmlns:cxf="http://www.mulesource.org/schema/mule/cxf/2.1"??
- ??????xmlns:axis="http://www.mulesource.org/schema/mule/axis/2.1"??
- ??????xmlns:smtps="http://www.mulesource.org/schema/mule/smtps/2.1"??
- ??????xmlns:http="http://www.mulesource.org/schema/mule/http/2.1"??
- ??????xmlns:stdio="http://www.mulesource.org/schema/mule/stdio/2.1"??
- ??????xmlns:soap="http://www.mulesource.org/schema/mule/soap/2.1"??
- ??????xsi:schemaLocation=" ??
- ???????????????http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans-2.5.xsd ??
- ???????????????http://www.mulesource.org/schema/mule/core/2.1?http://www.mulesource.org/schema/mule/core/2.1/mule.xsd ??
- ???????????????http://www.mulesource.org/schema/mule/stdio/2.1?http://www.mulesource.org/schema/mule/stdio/2.1/mule-stdio.xsd ??
- ???????????????http://www.mulesource.org/schema/mule/vm/2.1?http://www.mulesource.org/schema/mule/vm/2.1/mule-vm.xsd ??
- ???????????????http://www.mulesource.org/schema/mule/cxf/2.1?http://www.mulesource.org/schema/mule/cxf/2.1/mule-cxf.xsd ??
- ???????????????http://www.mulesource.org/schema/mule/axis/2.1?http://www.mulesource.org/schema/mule/axis/2.1/mule-axis.xsd ??
- ???????????????http://www.mulesource.org/schema/mule/smtps/2.1?http://www.mulesource.org/schema/mule/smtps/2.1/mule-smtps.xsd ??
- ???????????????http://www.mulesource.org/schema/mule/soap/2.1?http://www.mulesource.org/schema/mule/soap/2.1/mule-soap.xsd ??
- ???????????????http://www.mulesource.org/schema/mule/http/2.1?http://www.mulesource.org/schema/mule/http/2.1/mule-http.xsd ??
- ???????????????"> ??
- ?????<description> ??
- ????????eagleMule?demo?which?shows?how?to?publish?web?services?over?CXF. ??
- ????</description> ??
- ????<model?name="eagleMule"> ??
- ?????????<service?name="testMuleService"> ??
- ????????????<inbound> ??
- ????????????????<axis:inbound-endpoint?address="http://localhost:8899/services/testMuleService"> ??
- ????????????????????<soap:http-to-soap-request-transformer?/> ??
- ????????????????</axis:inbound-endpoint> ??
- ????????????????<cxf:inbound-endpoint?address="http://localhost:8898/services/testMuleService"> ??
- ????????????????????<soap:http-to-soap-request-transformer?/> ??
- ????????????????</cxf:inbound-endpoint> ??
- ????????????</inbound> ??
- ????????????<component?class="com.eagle.mule.test.imp.MuleServiceImp"> ??
- ????????????</component> ??
- ????????</service> ??
- ????</model> ??
- ????</mule>??
<?xml version="1.0" encoding="UTF-8"?> <mule xmlns="http://www.mulesource.org/schema/mule/core/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:vm="http://www.mulesource.org/schema/mule/vm/2.1" xmlns:cxf="http://www.mulesource.org/schema/mule/cxf/2.1" xmlns:axis="http://www.mulesource.org/schema/mule/axis/2.1" xmlns:smtps="http://www.mulesource.org/schema/mule/smtps/2.1" xmlns:http="http://www.mulesource.org/schema/mule/http/2.1" xmlns:stdio="http://www.mulesource.org/schema/mule/stdio/2.1" xmlns:soap="http://www.mulesource.org/schema/mule/soap/2.1" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.mulesource.org/schema/mule/core/2.1 http://www.mulesource.org/schema/mule/core/2.1/mule.xsd http://www.mulesource.org/schema/mule/stdio/2.1 http://www.mulesource.org/schema/mule/stdio/2.1/mule-stdio.xsd http://www.mulesource.org/schema/mule/vm/2.1 http://www.mulesource.org/schema/mule/vm/2.1/mule-vm.xsd http://www.mulesource.org/schema/mule/cxf/2.1 http://www.mulesource.org/schema/mule/cxf/2.1/mule-cxf.xsd http://www.mulesource.org/schema/mule/axis/2.1 http://www.mulesource.org/schema/mule/axis/2.1/mule-axis.xsd http://www.mulesource.org/schema/mule/smtps/2.1 http://www.mulesource.org/schema/mule/smtps/2.1/mule-smtps.xsd http://www.mulesource.org/schema/mule/soap/2.1 http://www.mulesource.org/schema/mule/soap/2.1/mule-soap.xsd http://www.mulesource.org/schema/mule/http/2.1 http://www.mulesource.org/schema/mule/http/2.1/mule-http.xsd "> <description> eagleMule demo which shows how to publish web services over CXF. </description> <model name="eagleMule"> <service name="testMuleService"> <inbound> <axis:inbound-endpoint address="http://localhost:8899/services/testMuleService"> <soap:http-to-soap-request-transformer /> </axis:inbound-endpoint> <cxf:inbound-endpoint address="http://localhost:8898/services/testMuleService"> <soap:http-to-soap-request-transformer /> </cxf:inbound-endpoint> </inbound> <component class="com.eagle.mule.test.imp.MuleServiceImp"> </component> </service> </model> </mule>
一個(gè)簡單的 接口 為了先跑同就這樣把。
MuleService.java
- ?@WebService??
- public?interface?MuleService?{ ??
- public?String?testMule(@WebParam(name="str")String?str); ??
- }??
@WebService public interface MuleService { public String testMule(@WebParam(name="str")String str); }
MuleServiceImp.java
- @WebService(serviceName="eagleMuleService", ??
- ??????????endpointInterface="com.eagle.mule.test.MuleService") ??
- public?class?MuleServiceImp?implements?MuleService?{ ??
- ??
- ????public?String?testMule(String?str)?{ ??
- ????????System.out.println("----service---"); ??
- ????????return?"hello--"+str; ??
- ????} ??
- }??
@WebService(serviceName="eagleMuleService", endpointInterface="com.eagle.mule.test.MuleService") public class MuleServiceImp implements MuleService { public String testMule(String str) { System.out.println("----service---"); return "hello--"+str; } }
啟動(dòng)服務(wù):
- public?class?EagleMuleMain?{ ??
- ????public?static?void?main(String[]?args)?throws?ConfigurationException,?InitialisationException?{ ??
- ????????try?{ ??
- ????????????String?configFile?=?"com/eagle/mule/test/mule_config.xml"; ??
- ????????????String[]?configFileArr?=?new?String[]?{?configFile?}; ??
- ????????????MuleContextFactory?muleContextFactory?=?new?DefaultMuleContextFactory(); ??
- ????????????MuleContext?context?=?muleContextFactory ??
- ????????????????????.createMuleContext(new?SpringXmlConfigurationBuilder( ??
- ????????????????????????????configFileArr)); ??
- ????????????context.start(); ??
- ????????}?catch?(MuleException?t)?{ ??
- ????????????t.printStackTrace(); ??
- ????????} ??
- ????} ??
- }??
public class EagleMuleMain { public static void main(String[] args) throws ConfigurationException, InitialisationException { try { String configFile = "com/eagle/mule/test/mule_config.xml"; String[] configFileArr = new String[] { configFile }; MuleContextFactory muleContextFactory = new DefaultMuleContextFactory(); MuleContext context = muleContextFactory .createMuleContext(new SpringXmlConfigurationBuilder( configFileArr)); context.start(); } catch (MuleException t) { t.printStackTrace(); } } }
測(cè)試
- package?com.eagle.mule.test.clint; ??
- ??
- import?java.io.IOException; ??
- import?java.io.InputStream; ??
- ??
- import?org.apache.commons.io.IOUtils; ??
- import?org.mule.api.MuleException; ??
- import?org.mule.api.MuleMessage; ??
- import?org.mule.module.client.MuleClient; ??
- ??
- public?class?Client?{ ??
- ????public?static?void?main(String[]?args){ ??
- ????????MuleClient?client?=?null;? ??
- ????????try?{ ??
- ????????????client?=?new?MuleClient(); ??
- ????????????String?url?=?"axis:http://localhost:8899/services/testMuleService/testMuleService?method=testMule"; ??
- ??
- ????????????MuleMessage?message?=?client.send(url,?"eagle",?null); ??
- ????????????Object?obj?=?message.getPayload(); ??
- ????????????System.out.println("--------------obj---------"+obj.getClass().getName()); ??
- ????????????if(obj?instanceof?String){ ??
- ????????????????System.out.println("---------str--------------"+obj); ??
- ????????????} ??
- ????????}?catch?(MuleException?e)?{ ??
- ????????????//?TODO?Auto-generated?catch?block ??
- ????????????e.printStackTrace(); ??
- ????????}finally{ ??
- ????????????client.dispose(); ??
- ????????} ??
- ??
- ????} ??
- } ??
- 注意?這里需要把mule?下lib中?endorsed??mule??opt?文件夾中的jar都加進(jìn)去。如果不發(fā)布cxf的服務(wù)?可以不用添加endorsed文件夾中的jar。?