论坛首页 Java企业应用论坛

mule2.1.2 初步认识 发布cxf 和axis服务

浏览 18070 次
精华帖 (2) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-30   最后修改:2008-12-30
SOA
最近公司需要写这样一个功能。也就是需要一个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://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);
}

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;
	}
}

启动服务:
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?wsdl&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都加进去。如果不发布cxf的服务 可以不用添加endorsed文件夹中的jar。 
   发表时间:2009-01-03  
好贴,我最近也在研究
0 请登录后投票
   发表时间:2009-01-04  
希望对你有帮助就行。现在就是在基于消息这块还在继续研究中。也希望大家一起交流
0 请登录后投票
   发表时间:2009-01-12  
好贴,我也是在研究呢
想问一下,为什么我安装mule2.1.2的安装jar包是,提示找不到main函数,安装失败??
在次之前上面有mule1.3.3版本
0 请登录后投票
   发表时间:2009-01-13  
gaoming25 写道

好贴,我也是在研究呢 想问一下,为什么我安装mule2.1.2的安装jar包是,提示找不到main函数,安装失败?? 在次之前上面有mule1.3.3版本

以解决,是安装包的路径里面有中文,才抛出异常!
0 请登录后投票
   发表时间:2009-01-16  
我没看出esb消息总线在这里体现在哪里
0 请登录后投票
   发表时间:2009-02-10  
这里是不是可以理解成,mule代替了tomcat的作用,来发布一个webservice呢?
0 请登录后投票
   发表时间:2009-02-16   最后修改:2009-02-17
dannycole 写道
这里是不是可以理解成,mule代替了tomcat的作用,来发布一个webservice呢?

这里Mule已经可以作为一个容器了(因为里面已经有了对相应的协议进行解析的module和transport了),可以直接作为服务程序运行,没必要再用web容器了.当然特殊情况下还是要部署到web程序里去的,直接在web.xml里配置就可以了.
0 请登录后投票
   发表时间:2009-02-17  
好贴,我也在研究呢
0 请登录后投票
   发表时间:2009-02-17  
lz http://localhost:8899/services/testMuleService 这里的8899这个端口号是mule默认的吗?
0 请登录后投票
论坛首页 Java企业应用版

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