近公司需要寫這樣一個功能。也就是需要一個esb消息總線。初步的功能是提供webservice的消息管理以后還會增加很多的功能。。以前本來在soa esb上面的東西就是個空白。在Google上找了一天最后由我自己覺得用mule2.1.2。讓后就瘋狂的找些好的帖子。希望能夠很快的入門。但發現不是那么一回事。找到的很多都是1.X的版本。2.1.2 的少得很。經過近半周的研究。。終于自己寫了一個小的test。貼上來給新入門的朋友希望有幫助。深入的研究以后還會繼續。
配置文件: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:??
- ???????????????http:??
- ???????????????http:??
- ???????????????http:??
- ???????????????http:??
- ???????????????http:??
- ???????????????http:??
- ???????????????http:??
- ???????????????http:??
- ???????????????"> ??
- ?????<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>
一個簡單的 接口 為了先跑同就這樣把。
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;
}
}
啟動服務:
- 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();
}
}
}
測試
- 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)?{ ??
- ??????????????
- ????????????e.printStackTrace(); ??
- ????????}finally{ ??
- ????????????client.dispose(); ??
- ????????} ??
- ??
- ????} ??
- } ??
- 注意?這里需要把mule?下lib中?endorsed??mule??opt?文件夾中的jar都加進去。如果不發布cxf的服務?可以不用添加endorsed文件夾中的jar。?