Mule入门基础

Mule入门文档

零、前提

在按照本文进行操作之前,假设您的系统已经具备以下前提:

  • 已经安装了Sun公司的JDK1.4或JDK5.0版本,推荐使用JDK5.0。
  • 正确设置了JAVA_HOME环境变量到JDK目录(注意不是JRE目录)。
  • 确保%JAVA_HOME%\bin路径在系统寻找路径中。
  • 安装有Eclipse3.2或以上版本的开发环境。
  • 安装有Apache Tomcat 5.0或以上版本,推荐使用5.5。文档假设Tomcat的安装目录为%TOMCAT_HOME%。

一、下载与安装

到Mule的官方网站(http://mule.mulesource.org/display/MULE/Download)上下载Mule的最新稳定版,目前是1.3.3(http://www.mulesource.com/ccount/click.php?id=17),也可以使用社区版的1.4.1(http://www.mulesource.com/ccount/click.php?id=33)。本文档以1.3.3版为例,1.4.1请参照文档自行修改。

下载后得到一个ZIP格式的压缩文件mule-1.3.3.zip,将该文件解压至任一目录,假设为C:\mule-1.3.3,本文档以环境变量MULE_HOME表示该目录。

二、运行Echo示例

Mule自带了很多示例,从最简单的echo示例到一个比较完整的贷款中介服务loanbroker。每个示例程序都分为ant和maven两个版本,它们分别位于 %MULE_HOME%\examples\ant和 %MULE_HOME%\examples\maven目录下。文档将以ant版本为例说明如何运行echo示例。

1、到apache官方网站的ant项目下载页(http://ant.apache.org/bindownload.cgi)上下载ant1.7.0(http://apache.mirror.phpchina.com/ant/binaries/apache-ant-1.7.0-bin.zip),下载后将文件解压到任一目录(假设为C:\apache-ant-1.7.0,文档中表示为ANT_HOME环境变量)。

2、设置环境变量ANT_HOME到ant的解压目录,如:

ANT_HOME=C:\apache-ant-1.7.0

3、将%ANT_HOME%\bin加入到系统寻找路径中,如:

PATH=%ANT_HOME%\bin;%PATH%

4、启动命令行窗口,进入%MULE_HOME%\examples\ant\echo目录,执行下面命令:

echo.bat

示例程序会先显示一个License信息,输出一些日志记录,最终出现以下信息:


INFO 2007-08-29 16:54:44,062 [WrapperSimpleAppMain] org.mule.MuleManager:

**********************************************************************

* Mule ESB and Integration Platform version Not Set                 *

* Not Set                                                           *

* For more information go to http://mule.mulesource.org             *

*                                                                   *

* Server started: 2007年8月29日 星期三 下午04时54分42秒 CST          *

* Server ID: Mule_Echo_Sample                                       *

* JDK: 1.5.0_11 (mixed mode, sharing)                               *

* OS: Windows XP - Service Pack 2 (5.1, x86)                        *

* Host: zengfl (192.168.25.71)                                      *

*                                                                   *

* Agents Running:                                                   *

*   Mule Admin: accepting connections on tcp://localhost:60504      *

**********************************************************************

INFO 2007-08-29 16:54:44,062 [WrapperSimpleAppMain] org.mule.MuleServer: Mule S

erver initialized.

Please enter something:

表示示例程序运行成功,随便输入一些字符,这些字符被回显出来的同时,回显的处理日志信息也被显示出来。

注意,在执行这个步骤时,请确信您能访问互联网,否则,示例程序无法运行。

三、一个简单的Mule Java Application

下面,以一个类似Echo的Java Application为例说明如何使用Mule来建立应用。后面会说明如何在Web应用程序中集成Mule。

1、在Eclipse中建立一个Java Application,为Application命令为MuleAppTest。

2、在Package Explorer视图中,选中刚刚建立的MuleAppTest项目,按下Alt+Enter键打开该项目的属性设置对话框,找到Java Build Path菜单,打开右边的Libraries标签页。

3、点击“Add External JARs...”按钮,将 %MULE_HOME%\lib\mule 目录和 %MULE_HOME%\lib\opt 目录下的所有jar文件添加到项目的库路径中(%MULE_HOME%\bin\opt目录下的jar文件并不是必须的,您可以根据需要选择您要加入的包,本文实际上只使用了与Web Service相关的一些库文件)。

4、在源码目录(src)下建立一个EchoService接口及其实现类EchoServiceImpl。

EchoService.java


package com.san.mule;

public interface EchoService {

    public String echo(String s);

}

EchoServiceImpl.java


package com.san.mule;

public class EchoServiceImpl implements EchoService {

    public String echo(String s) {

        return s;

}

}

5、在源码目录(src)下建立一个mule-config.xml文件,为Mule配置入口端点,并将这个端点发布成一个基于axis的Web服务。

mule-config.xml


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mule-configuration PUBLIC "-//MuleSource //DTD mule-configuration XML V1.0//EN"

"http://mule.mulesource.org/dtds/mule-configuration.dtd">

<mule-configuration id="mule-test" version="1.0">

<model name="echoService">

<mule-descriptor name="echoService"

implementation="com.san.mule.EchoServiceImpl">

<inbound-router>

<endpoint

address="axis:http://localhost:8181/services">

</endpoint>

</inbound-router>

<properties>

<list name="serviceInterfaces">

<entry value="com.san.mule.EchoService" />

</list>

</properties>

</mule-descriptor>

</model>

</mule-configuration>

6、建立一个Mule的Application示例。

MuleAppTest.java


package com.san.mule;

import org.mule.config.ConfigurationException;

import org.mule.config.builders.MuleXmlConfigurationBuilder;

import org.mule.umo.manager.UMOManager;

public class MuleAppTest {

public static void main(String[] args) throws ConfigurationException {

MuleXmlConfigurationBuilder builder = new MuleXmlConfigurationBuilder();

UMOManager manager = builder.configure("mule-config.xml");

}

}

7、在MuleAppTest.java点击右键,选择Run As菜单中的Java Application运行MuleAppTest类。

8、打开浏览器,访问http://localhost:8181/services/echoService?wsdl,即可看见服务的描述信息。

9、我们来运行一下这个Web服务,看是否能正确运行,在浏览器地址栏中输入:

http://localhost:8181/services/echoService?method=echo&param=zengfl

四、在Web Application中集成Mule

继续前面的项目,我们将Mule集成到Tomcat的一个Web Application中,并使用一个JSP页面来访问Mule组件。

1、在项目中建立Web Application的相关目录WEB-INF、WEB-INF\lib和WEB-INF\classes。

2、将%MULE_HOME%\lib\mule目录和%MULE_HOME%\lib\opt目录下的所有文件复制到项目的WEB-INF\lib目录下。

将%MULE_HOME%\lib\user\activation.jar和%MULE_HOME%\lib\user\mail.jar两个文件复制到项目的WEB-INF\lib目录下。(注意,如果你没有找到这两个文件,那是因为你没有成功运行第二节中的测试程序。)

3、将项目的output folder设置成项目的WEB-INF/classes目录。

4、将项目src目录下的mule-config.xml文件复制到项目的WEB-INF目录下。

注意,当你把项目的output folder设置成WEB-INF/classes时,该目录会从Package Explorer中消失,这是正常现在,你可以在Navigator视图中找到这个目录。

5、建立WEB-INF\web.xml文件。

web.xml


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<display-name>Mule</display-name>

<description>Mule Demo</description>

<context-param>

<param-name>org.mule.config</param-name>

<param-value>/WEB-INF/mule-config.xml,</param-value>

</context-param>

<listener>

<listener-class>

org.mule.config.builders.MuleXmlBuilderContextListener

</listener-class>

</listener>

<servlet>

<servlet-name>muleServlet</servlet-name>

<servlet-class>

org.mule.providers.http.servlet.MuleReceiverServlet

</servlet-class>

<load-on-startup />

</servlet>

<servlet-mapping>

<servlet-name>muleServlet</servlet-name>

<url-pattern>/services/*</url-pattern>

</servlet-mapping>

</web-app>

6、建立一个测试页面echo.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"%>

<%@ page import="org.mule.extras.client.MuleClient" %>

<%@ page import="org.mule.umo.UMOMessage" %>

<html>

<head>

<title>Mule Web Application Test</title>

</head>

<body>

<%

String s = request.getParameter("name");

if (s != null) {

MuleClient client = new MuleClient();

UMOMessage message = client.send(

"axis:http://localhost:8181/services/echoService?method=echo",

s, null);

%>

<h3><%=message.getPayload()%></h3>

<%

}

%>

你的名字:

<form method="POST" name="submitEcho" action="">

<table>

<tr>

<td><input type="text" name="name" /></td>

<td><input type="submit" name="Go" value=" 确定 " /></td>

</tr>

</table>

</form>

<p/>

</body>

</html>

7、将项目部署到%TOMCAT_HOME%\webapp目录下,启动Tomcat,访问

http://localhost:8080/MuleAppTest/echo.jsp

输入你的名字测试一下,OK。

Mule入门基础,布布扣,bubuko.com

时间: 2024-12-21 10:03:04

Mule入门基础的相关文章

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

linux入门基础——linux软件管理RPM

因为linux入门基础是基于CentOS讲解的,讲的是CentOS上的软件包管理.ubuntu的软件包管理有这些:ubuntu软件包管理,包管理指南,ubuntu软件包管理. linux软件管理:RPM软件包管理 源代码形式 绝大多数开源软件都是直接以源代码形式发布 源代码一般会被打包成tar.gz的归档压缩文件 程序源代码需要手动编译成二进制形式之后才能够运行使用 源代码基本编译流程: 1 ./configure   检查编译环境.相关库文件以及配置参数并生成makefile 2 make  

Angular JS从入门基础 mvc三层架构 常用指令

Angular JS从入门基础  mvc模型 常用指令 ★ 最近一直在复习AngularJS,它是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心的是:MVC.模块化.自动化双向数据绑定.语义化标签.依赖注入等等. 1.常用指令 AngularJS 通过指令扩展了HTML,且通过表达式绑定数据到 HTML.下面我们看一下AngularJS中的常用指令. (1).基本概念 指令:AngularJS中,通过扩展HTML的属性提供功能.所以,ng-

Linux入门基础命令(四)

Linux入门基础命令(四)文件系统与目录结构: 1.文件和被组织成一个单根倒置树结构2.文件系统从根目录下开始,用"/表示"3.以.开头的文件为隐藏文件4.路径分割的 /5.文件有两类数据(元数据:metadata 数据:data)6.文件系统分层结构:LSB(Linux Standard Base)FHS:(Filesystem Hierarchy Standard)7.文件名最长255个字节8.包括路径在内文件名称最长4095个字节9.蓝色-->目录 绿色-->可执行

Linux入门基础命令—cp

Linux入门基础命令-cpcp格式有以下几种 A1.如果SOURCE是一个文件,目标文件不存在:当将SOURCE复制到另外一个当前目录下不存在的文件(会新建这个文件)比如下面的这个例子是把issue复制到abc文件中,而本来当前目录app是不存在abc这个文件的,当进行复制的时候会自动生成abc这个文件,当然这两个文件只是名字不同大小是一样的: A2.如果将上述的命令再执行一遍,本来abc这个文件是已经有内容了,若再去执行,那么issue中的内容将会覆盖掉原来abc中的内容(下面红色箭头所指的

ReactJS入门基础

渲染这俩字可能在很多地方都见过.但可能不太理解是啥意思. 那么首先我们来理解一下渲染. 渲染 我觉得这样理解比较通俗. 我们做一个汽车,开始是没有喷漆的(没有css) 只是些框框架架(HTML标签).那么网页加载就是首先加载完HTML元素,其次是css,css去遍历渲染每个对应元素的样式让其看起来就是我们所想看到的效果一样.不同浏览器的渲染方式不一样,渲染机制也不一样. 简单来将一个完整的HTML页面渲染完成是有2个东西的.一个HTML元素加载完成,一个是CSS样式加载完成.其次才是JS,如果J

Linux入门基础命令(一)

Linux入门基础命令内部命令常驻内存:由shell自带的,而且通过某命令形式提供 help:获取所有内部命令列表(下图只截取了一部分) enable COMMAND:执行此命令可以启用COMMAND命令enable -n COMMAND:执行此命令可以禁用COMMAND命令enable -n:查看所有被禁用的命令(如下图) 外部命令执行在文件系统路径下有对应的可执行序行文件查看路径: which -a|--skip-alias; wheris whichCOMMAND:查看外部命令which

Scrum入门基础系列之Scrum会议

Scrum入门基础系列之Scrum会议 3条回复 Scrum会议包含Sprint计划会.每日例会.Sprint评审会.Sprint回顾会.下面分别介绍这几个会议,按照一个简单模板进行介绍: WHY.WHAT.WHEN.WHO.HOW,即为什么要有这个会议,这个会议的输入和输出是什么,什么时间开这个会,谁来参加,如何开好这个会议. Sprint计划会 WHY Sprint计划会是为当前Sprint做计划的会议. WHAT Sprint计划会的输入为产品Backlog,最新的产品增量,团队的能力和开

Scrum入门基础系列之Scrum工件

Scrum入门基础系列之Scrum工件 3条回复 Scrum工件主要包含一下3种: 产品Backlog Sprint Backlog 产品增量 产品Backlog 在Scrum中,主要由产品负责人[参见Scrum入门基础系列之Scrum角色]整理和维护产品Backlog.产品Backlog是Scrum中维护需求的主要工件,也是做好Scrum的第一步.一个好的产品Backlog,是要符合DEEP原则的,即,产品Backlog是详略得当的(Detailed Appropriate),涌现的(Emer