- 浏览: 30803 次
- 性别:
- 来自: Sichuan Chengdu
-
最新评论
-
boyingking:
简单来说,mule有两个主要功能:
1:作为一系列协议或者技术 ...
Mule入门 -
welcomyou:
关于中文乱码的问题,到现在我也没有找到好的办法,有一个Enco ...
Mule入门 -
Angel.John:
ype Exception report
message
...
Mule入门 -
changyanping:
我也是输入中文出现乱码,楼上的那位兄弟解决了这个问题了么?
Mule入门 -
changyanping:
兄弟可不可以给个录个视频呀?我老是搞不对!郁闷,要是能得到您的 ...
Mule入门
该文档主要参照Mule1.3.3中的example。
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。
评论
1:作为一系列协议或者技术的实现引擎,如mule本身已经集成了xfire引擎,axis引擎等等一系列的引擎。使用mule可以直接发布webservice,file服务等等。
2:构建消息通道,实现消息准确的路由,使用统一的方式,以一致的API在各个已有系统间通信。(此处是bus功能的直接体现)
当然,消息的过滤,路由等等一些“辅助功能”,mule也已经实现。
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: javax.servlet.ServletException: org.mule.umo.provider.DispatchException: Failed to route event via endpoint: MuleEndpoint{endpointUri=http://localhost:8080/mule/services/echoService?method=echo, connector=AxisConnector{this=1db484d, started=true, initialised=true, name='connector.axis.0', disposed=false, numberOfConcurrentTransactedReceivers=4, createMultipleTransactedReceivers=true, connected=true, supportedProtocols=[axis, axis:http, axis:https, axis:servlet, axis:vm, axis:jms, axis:xmpp, axis:smtp, axis:smtps, axis:pop3, axis:pop3s, axis:imap, axis:imaps, axis:ssl, axis:tcp, axis:http, axis:https, axis:servlet, axis:vm, axis:jms, axis:xmpp, axis:smtp, axis:smtps, axis:pop3, axis:pop3s, axis:imap, axis:imaps, axis:ssl, axis:tcp], serviceOverrides=null}, transformer=null, name='endpoint.http.localhost.8080.mule.services.echoService.method.echo', type='sender', properties={method=echo}, transactionConfig=Transaction{factory=null, action=NONE, timeout=30000}, filter=null, deleteUnacceptedMessages=false, initialised=false, securityFilter=null, synchronous=null, initialState=started, createConnector=0, remoteSync=null, remoteSyncTimeout=10000, endpointEncoding=null}. Message payload is of type: String
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:541)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
javax.servlet.ServletException: org.mule.umo.provider.DispatchException: Failed to route event via endpoint: MuleEndpoint{endpointUri=http://localhost:8080/mule/services/echoService?method=echo, connector=AxisConnector{this=1db484d, started=true, initialised=true, name='connector.axis.0', disposed=false, numberOfConcurrentTransactedReceivers=4, createMultipleTransactedReceivers=true, connected=true, supportedProtocols=[axis, axis:http, axis:https, axis:servlet, axis:vm, axis:jms, axis:xmpp, axis:smtp, axis:smtps, axis:pop3, axis:pop3s, axis:imap, axis:imaps, axis:ssl, axis:tcp, axis:http, axis:https, axis:servlet, axis:vm, axis:jms, axis:xmpp, axis:smtp, axis:smtps, axis:pop3, axis:pop3s, axis:imap, axis:imaps, axis:ssl, axis:tcp], serviceOverrides=null}, transformer=null, name='endpoint.http.localhost.8080.mule.services.echoService.method.echo', type='sender', properties={method=echo}, transactionConfig=Transaction{factory=null, action=NONE, timeout=30000}, filter=null, deleteUnacceptedMessages=false, initialised=false, securityFilter=null, synchronous=null, initialState=started, createConnector=0, remoteSync=null, remoteSyncTimeout=10000, endpointEncoding=null}. Message payload is of type: String
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.echo_jsp._jspService(echo_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
相关推荐
### Mule 入门知识点详解 #### 一、Mule 概述 Mule 是一款企业级集成平台,主要用于连接不同的应用程序和服务,并实现数据和消息的传输。它提供了丰富的连接器,支持多种协议,能够方便地与其他系统进行交互。本文...
"Mule入门文档"是一个关于集成平台Mule的学习资源,它可能是某个教程或指南的压缩包。Mule是一个开源的企业服务总线(ESB)和应用程序集成平台,由MuleSoft公司开发,现已被Salesforce收购。这篇文档可能包含了对...
【Mule 入门文档】 Mule 是一个开源的企业服务总线(Enterprise Service Bus,ESB)和集成平台,它提供了灵活且强大的工具来连接不同的系统、应用和服务,实现企业内部以及跨组织的数据交换。本入门文档将指导你从...
"Mule3.4入门学习" 本文将对Mule3.4进行入门学习,涵盖Mule环境搭建、Webservice的发布、JMS消息通信、ftp、File应用、协议转换等知识点。 一、Mule环境搭建 Mule环境的搭建需要JDK的支持,包括下载、安装、配置...
本教程将带您入门Mule ESB项目,通过实例学习其核心概念和操作。 首先,我们需要理解ESB的基本概念。ESB作为一个中间件,它的主要作用是提供一种松耦合的方式,使得各个系统之间可以通过标准接口进行通信,而不是...
标题与描述概述的知识点主要围绕Mule ESB的入门、介绍以及架构理解展开,下面将对这些知识点进行详细的解析和扩展: ### Mule是什么? Mule是一个基于Java的高度可扩展的开源消息框架,旨在简化应用系统间的通信和...
【描述】虽然描述中提供的信息有限,但通过提供的博文链接——,我们可以推测这可能是一个关于Mule ESB的教程或指南,旨在帮助开发者快速入门并熟悉Mule 3版本的相关开发工作。这个博客文章可能包含了Mule的基本概念...
总之,《mule的官方3.0手册》不仅是一份入门指南,更是Mule开发者在构建、测试、维护和扩展应用过程中的宝贵资源。通过遵循手册中的建议和最佳实践,开发者可以更有效地利用Mule的强大功能,构建出既高效又可维护的...
- **快速入门**:Mule提供了多个示例项目来帮助新手快速上手。这些示例覆盖了从简单的Hello World程序到复杂的业务流程模拟等多个场景。 - **Hello World示例**:这是最基础的示例,演示了如何使用Mule创建一个简单...
本篇文章将详细介绍如何通过具体的示例来了解Mule ESB 的基本使用方法,尤其适合初学者入门学习。 #### 二、Mule Studio 安装与配置 ##### 1. 安装前的准备 在安装 Mule Studio 之前,需要先确保已经完成了以下...
#### Mule的配置入门 本书从基础的“Hello World”示例开始,逐步引导读者熟悉Mule的配置方式,包括使用Spring XML和Groovy语言进行配置。Spring XML配置提供了强大的灵活性,允许开发者定义复杂的依赖关系,而...
《Mule in Action》是一本专注于Mule ESB(企业服务总线)的入门教程,旨在帮助读者系统地学习和理解这一强大的集成平台。Mule ESB是开源领域中的一个重量级选手,常用于构建灵活、可扩展的企业级集成解决方案。这...
"Mule介绍.doc"文档可能涵盖Mule的基本概念、架构、核心组件以及如何入门等内容。通常,这样的文档会解释Mule ESB的工作原理,包括Inbound Endpoints(输入端点)、Outbound Endpoints(输出端点)、Transformers...
总而言之,Mule开发者指南为开发者提供了一个全面的学习路径,从基础的入门知识到项目创建、配置和运行,再到项目维护和故障排除,涵盖了成为一名成功Mule开发者所需要掌握的各个方面。通过遵循这份指南,开发者将...
《Mule in Action》这本书是...总的来说,这本书不仅适合初学者入门,也适合有经验的Mule开发者深入研究。通过阅读和实践,你可以掌握Mule ESB的关键技术,提升自己的集成能力,为企业的信息化建设提供强大的技术支持。
通过上述步骤,开发者可以快速入门Mule ESB Studio的安装和使用方法,掌握如何创建基本的Mule项目,了解Mule流程的基本构成及运行机制。这对于构建复杂的服务集成应用具有重要意义。随着对Mule ESB Studio的进一步...
- **快速入门指南:** - 通过一个简单的示例项目,快速上手Mule的开发流程。 **2. Processing messages with Mule(使用Mule处理消息)** - **消息模型:** - 了解Mule中的消息模型是如何工作的,包括消息的结构...
用户指南的入门部分将介绍Mule配置的基础知识,包括XML配置文件的结构和关键元素,这为后续的深入学习打下基础。 2. **流程、模式与服务的选择**: 在Mule中,可以使用flows、patterns和服务来组织和执行业务逻辑...