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¶m=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入门基础的更多相关文章
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...
- 01shell入门基础
01shell入门基础 为什么学习和使用shell编程 shell是一种脚本语言,脚本语言是相对于编译语言而言的.脚本语言不需要编译,由解释器读取程序并且执行其中的语句,而编译语言需要编译成可执行代码 ...
- Markdown入门基础
// Markdown入门基础 最近准备开始强迫自己写博文,以治疗严重的拖延症,再不治疗就“病入骨髓,司命之所属,无奈何”了啊.正所谓“工欲善其事,必先利其器”,于是乎在写博文前,博主特地研究了下博文 ...
- JavaScript入门基础
JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运 ...
- C++ STL编程轻松入门基础
C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...
- HTML入门基础教程相关知识
HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...
- Linux shell入门基础(六)
六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...
- Linux shell入门基础(一)
Linux shell入门基础(一): 01.增加删除用户: #useradd byf userdel byf(主目录未删除) userdel -r byf 该用户的属性:usermod 用 ...
- AngularJS入门基础PPT(附下载链接)
学习了Angularjs有段时间,自己写了一个PPT,个人认为总结的非常全面,对于入门基础够了. 大致模块有:Angularjs简单介绍,Angularjs特性,hello world,Control ...
随机推荐
- c#语言-高阶函数
介绍 如果说函数是程序中的基本模块,代码段,那高阶函数就是函数的高阶(级)版本,其基本定义如下: 函数自身接受一个或多个函数作为输入. 函数自身能输出一个函数,即函数生产函数. 满足其中一个条件就可以 ...
- ASP.NET MVC 控制器激活(二)
ASP.NET MVC 控制器激活(二) 前言 在之前的篇幅中,用文字和图像来表示了控制器的激活过程,描述的角度都是从框架默认实现的角度去进行描述的,这样也使得大家都可以清楚的知道激活的过程以及其中涉 ...
- awk 留底
序 因为经常做awk编码,而且跨过一段时间就容易忘记,故在此做个留底.便于翻阅.——后期会在这个页面不断补充! 常用常量 属性 描述 NR 已读入的总记录数 ARGIND 当前被 ...
- 一种Flash页游前端3D转2D显示技术——PV2D, 颠覆传统吧!
stage3D很强大,但是客户端硬件加速支持有限. 出来的图形锯齿严重,看上去和果冻一样. Stage3d不兼容2d模式. 总的来说,3D很美好,现实很残酷.但是3D有无可比拟的优势:那就是节省90% ...
- WCF wsHttpBinding之Transport security Mode, clientCredentialType=”Basic”
原创地址:http://www.cnblogs.com/jfzhu/p/4071342.html 转载请注明出处 如何在WCF中使用Transport Security Mode,以及如何创建证书,请 ...
- JS设计模式(一)
刚入职时,看过一段时间的设计模式,似懂非懂.不知不觉过去七个月了,对JS的理解更深刻了,数据结构与算法的基础也基本上算是过了一遍了,接下来要把设计模式搞定,然后不再深层次研究JS了,而是学习前端自动化 ...
- Java 循环中标签的作用
continue和break可以改变循环的执行流程,但在多重循环中,这两条语句无法直接从内层循环跳转到外层循环.在C语言中,可以通过goto语句实现多重循环的跳转,但在非循环结构中使用goto语句会使 ...
- Execute SQL Task 参数和变量的映射
Execute SQL Task能够执行带参数的SQL查询语句或存储过程(SP),通过SSIS的变量(Variable)对参数赋值.对于不同的Connection Manager,在Task中需要使用 ...
- 解决升级Win 10 IP 10122后无法调试UAP应用的方法
可能各位也像老周一样,第一时间升级了Build 10122,但不知道大家有没有发现,当你升级后,写一个UAP应用,要调试运行时,就会出错,错误如下: DEP0730 : 注册应用程序失败,因为目标计算 ...
- 前端工程师技能之photoshop巧用系列第三篇——切图篇
× 目录 [1]切图信息 [2]切图步骤 [3]实战 前面的话 前端工程师除了使用photoshop进行测量之外,更重要的是要使用该软件进行切图.本文是photoshop巧用系列的第三篇——切图篇 切 ...