- 浏览: 2683237 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
80后的童年2:
深入浅出MongoDB应用实战开发网盘地址:https://p ...
MongoDB入门教程 -
shliujing:
楼主在不是精通java和php的前提下,请不要妄下结论。
PHP、CakePHP哪凉快哪呆着去 -
安静听歌:
希望可以一给一点点注释
MySQL存储过程之代码块、条件控制、迭代 -
qq287767957:
PHP是全宇宙最强的语言!
PHP、CakePHP哪凉快哪呆着去 -
rryymmoK:
深入浅出MongoDB应用实战开发百度网盘下载:链接:http ...
MongoDB入门教程
Mule is the leading open source ESB (Enterprise Service Bus) and integration platform. It is a scalable, highly distributable
object broker that can seamlessly handle interactions with services and applications using disparate transport and messaging
technologies。
在这里我们简单看看如何用Mule发布和调用Web服务,体验一下Mule的简洁和高效。
安装Mule
去Mule官方下载页下载最新的Full版zip文件,解压到一个目录。
运行一下MULE_HOME\examples\maven\echo目录下的echo.bat,则mule会自动下载合适版本的activation.jar和mail.jar到MULE_HOME\lib\user目录
echo.bat示例了一个command prompt下的echo程序,该程序会echo你在命令行输入的字符串。
创建Eclipse项目
我们在Eclipse下新建命名为mule的Java project,其中包结构如下:
将MULE_HOME\lib\mule目录和MULE_HOME\lib\opt目录下所有的jar包以及MULE_HOME\lib\user目录下的activation.jar和mail.jar统统扔到WEB-INF\lib目录下。
其中mule-banner.gif、contents.html、header.html、index.html、welcome.html等来自将MULE_HOME\examples\ant\webapp目录下的build.xml用ant
build后在build目录下生成的mule-example-webapp.war中的文件。
在这里我们修改该mule-example-webapp.war工程来demo一下使用Mule发布和调用Web服务。
写我们要发布的服务
上面列出的IEchoService.java为我们要发布的服务的接口,该接口约束了我们要发布的服务:
如上,我们将使用该接口发布echo和haha这两个服务。现在写我们的服务实现类EchoService.java(系统集成时可能实现已经存在,我们只需抽离要
发布的服务的窄接口即可):
可以看到,虽然我们的EchoService提供了echo/haha/hehe三个服务,但我们使用IEchoService来约束它,从而只发布其中的echo和haha这两个服务。
配置使我们的服务以Web Service发布
首先我们修改web.xml来让servlet容器listen和mapping一些东西:
然后我们配置mule-echo-config.xml来以Web Service方式发布我们的服务:
这里我们的echoService实现为cn.hidetoishandsome.mule.demo.EchoService,inbound-router中<endpoint address="xfire:http://localhost:8181/services"/>表示我们以xfire发布我们的服务到本机该端口的services这个context下,而serviceInterfaces的entry表示我们使用IEchoService
来约束我们要发布的服务接口。
运行和调用服务
让我们将该mule项目在Tomcat中跑起来看看效果吧。
例如配置Tomcat的server.xml,在<Host>标签中加入<Context path="/mule" docBase="D:\project\mule" reloadable="true" />
启动Tomcat,打开浏览器访问http://localhost:8181/services/echoService?wsdl可以看到Mule通过xfire自动生成的wsdl文档,其中
我们可以看到Mule只暴露了EchoService和echo和haha方法,而没有暴露hehe方法。
现在我们在echo.jsp中利用Mule的UMO(Universal Message Object)API写对我们刚发布的Web服务的客户端调用:
好了,用浏览器访问http://localhost:8080/mule并点击左侧菜单的Echo链接,或者直接访问http://localhost:8080/mule/echo.jsp,然后在input框输入一些文本内容如"Hideto",点击Go,则你会看到页面返回"Hello, Hideto!"。
现在让我们修改echo.jsp,将UMOMessage message = client.send("xfire:http://localhost:8181/services/echoService?method=echo", s, null);
这段代码中的method改为haha,即:
然后刷新一下浏览器页面,再输入一些文本内容,看看页面是不是返回"haha"字样了?
object broker that can seamlessly handle interactions with services and applications using disparate transport and messaging
technologies。
在这里我们简单看看如何用Mule发布和调用Web服务,体验一下Mule的简洁和高效。
安装Mule
去Mule官方下载页下载最新的Full版zip文件,解压到一个目录。
运行一下MULE_HOME\examples\maven\echo目录下的echo.bat,则mule会自动下载合适版本的activation.jar和mail.jar到MULE_HOME\lib\user目录
echo.bat示例了一个command prompt下的echo程序,该程序会echo你在命令行输入的字符串。
创建Eclipse项目
我们在Eclipse下新建命名为mule的Java project,其中包结构如下:
mule src-demo cn.hidetoishandsome.mule.demo EchoService.java IEchoService.java images mule-banner.gif WEB-INF lib mule-echo-config.xml web.xml contents.html echo.jsp header.html index.html welcome.html
将MULE_HOME\lib\mule目录和MULE_HOME\lib\opt目录下所有的jar包以及MULE_HOME\lib\user目录下的activation.jar和mail.jar统统扔到WEB-INF\lib目录下。
其中mule-banner.gif、contents.html、header.html、index.html、welcome.html等来自将MULE_HOME\examples\ant\webapp目录下的build.xml用ant
build后在build目录下生成的mule-example-webapp.war中的文件。
在这里我们修改该mule-example-webapp.war工程来demo一下使用Mule发布和调用Web服务。
写我们要发布的服务
上面列出的IEchoService.java为我们要发布的服务的接口,该接口约束了我们要发布的服务:
package cn.hidetoishandsome.mule.demo; public interface IEchoService { String echo(String s); String haha(String s); }
如上,我们将使用该接口发布echo和haha这两个服务。现在写我们的服务实现类EchoService.java(系统集成时可能实现已经存在,我们只需抽离要
发布的服务的窄接口即可):
package cn.hidetoishandsome.mule.demo; public class EchoService implements IEchoService { public String echo(String s) { return "Hello, " + s + "!"; } public String haha(String s) { return "haha"; } public String hehe(String s) { return "hehe"; } }
可以看到,虽然我们的EchoService提供了echo/haha/hehe三个服务,但我们使用IEchoService来约束它,从而只发布其中的echo和haha这两个服务。
配置使我们的服务以Web Service发布
首先我们修改web.xml来让servlet容器listen和mapping一些东西:
<?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-echo-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> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
然后我们配置mule-echo-config.xml来以Web Service方式发布我们的服务:
<?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_Demo" version="1.0"> <mule-descriptor name="echoService" implementation="cn.hidetoishandsome.mule.demo.EchoService"> <inbound-router> <endpoint address="xfire:http://localhost:8181/services"/> </inbound-router> <properties> <list name="serviceInterfaces"> <entry value="cn.hidetoishandsome.mule.demo.IEchoService"/> </list> </properties> </mule-descriptor> </mule-configuration>
这里我们的echoService实现为cn.hidetoishandsome.mule.demo.EchoService,inbound-router中<endpoint address="xfire:http://localhost:8181/services"/>表示我们以xfire发布我们的服务到本机该端口的services这个context下,而serviceInterfaces的entry表示我们使用IEchoService
来约束我们要发布的服务接口。
运行和调用服务
让我们将该mule项目在Tomcat中跑起来看看效果吧。
例如配置Tomcat的server.xml,在<Host>标签中加入<Context path="/mule" docBase="D:\project\mule" reloadable="true" />
启动Tomcat,打开浏览器访问http://localhost:8181/services/echoService?wsdl可以看到Mule通过xfire自动生成的wsdl文档,其中
我们可以看到Mule只暴露了EchoService和echo和haha方法,而没有暴露hehe方法。
现在我们在echo.jsp中利用Mule的UMO(Universal Message Object)API写对我们刚发布的Web服务的客户端调用:
<%@ page import="org.mule.extras.client.MuleClient, org.mule.umo.UMOMessage"%> <%@ page language="java" contentType="text/html; charset=UTF-8" %> <html> <head> <title>Mule Echo Example</title> </head> <body> <% String s = request.getParameter("name"); if(s!=null) { MuleClient client = new MuleClient(); UMOMessage message = client.send("xfire:http://localhost:8181/services/echoService?method=echo", s, null); %> <h3><%=message.getPayload()%></h3> <%}%> Please enter your name: <form method="POST" name="submitEcho" action=""> <table> <tr><td> <input type="text" name="name"/></td><td><input type="submit" name="Go" value=" Go " /> </td></tr> </table> </form> <p/> </body> </html>
好了,用浏览器访问http://localhost:8080/mule并点击左侧菜单的Echo链接,或者直接访问http://localhost:8080/mule/echo.jsp,然后在input框输入一些文本内容如"Hideto",点击Go,则你会看到页面返回"Hello, Hideto!"。
现在让我们修改echo.jsp,将UMOMessage message = client.send("xfire:http://localhost:8181/services/echoService?method=echo", s, null);
这段代码中的method改为haha,即:
UMOMessage message = client.send("xfire:http://localhost:8181/services/echoService?method=haha", s, null);
然后刷新一下浏览器页面,再输入一些文本内容,看看页面是不是返回"haha"字样了?
评论
3 楼
welcomyou
2008-01-23
<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>
No need add this part.
<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>
No need add this part.
2 楼
peter_yin_1983
2007-04-16
Tomcat最好用最新的版本(如5.5.9),否则会有问题(5.0.28上测得有问题)。
谢谢hideto的分享。
谢谢hideto的分享。
1 楼
peter_yin_1983
2007-04-16
:)
发表评论
-
Ubuntu 11.10 安装Java、JIRA/Confluence/FishEye、Nginx
2012-03-01 22:26 46711. 替换Ubuntu源 编辑/etc/apt/source. ... -
Android开发WeatherForecast程序
2009-03-28 13:38 62951,使用Googel API http://www.googl ... -
Android程序开发入门
2009-03-26 14:26 30321, 安装软件 1) JDK 2) Eclipse 3) AD ... -
Spring与ThreadLocal的讨论
2007-07-31 12:27 3916Singleton是不能使用非Singleton的实例的 比如 ... -
Spring基础培训ppt
2007-07-30 19:34 6255做ppt还真是累 更新了一下ppt. -
使用Jetty和DWR创建伸缩性Comet程序
2007-07-28 21:11 7529Ajax for Java developers: Write ... -
Java代码规范
2007-07-19 01:12 3450http://java.sun.com/docs/codeco ... -
Spring JavaConfig参考文档
2007-07-14 18:37 12835Spring JavaConfig参考文档 Spring Ja ... -
Tiger in the house
2007-07-14 02:49 8295很高兴花周五晚上2个小时的时间来阅读这样一本实用的书 -- 《 ... -
深入了解Java ClassLoader、Bytecode 、ASM、cglib
2007-07-05 16:50 19466一、Java ClassLoader 1,什么是ClassL ... -
Java里判断Image文件信息格式(GIF/PNG/JPG)/Size/Height/Width?
2007-06-05 18:01 92881,判断Image格式 用UE打开GIF/PNG/JPG格式的 ... -
推荐轻量级面向服务Web开发库Objot
2007-05-27 22:17 3207Objot是我们公司Aragon Consulting Gro ... -
实战Mule:利用Mule调用XFire发布的文件上传服务
2007-03-27 15:17 5943配置Mule和XFire环境 参考前面的文章实战Mule:利用 ... -
实战Mule:利用Mule调用XFire发布的Web服务
2007-03-26 17:26 9410下载和安装XFire和Mule 参考http://hideto ... -
XFire快速上手
2007-03-14 11:53 6712下载XFrie 首先,去http://xfire.codeha ... -
学习Eclipse RCP之Hello World
2007-03-12 17:57 4254创建插件项目 打开Eclipse并选择File->New ... -
Google Web Toolkit上手指南
2007-03-12 16:07 4791目录 安装Google Web Toolkit 构建一个简单的 ... -
5分钟学习Maven2
2007-03-12 01:12 5954安装 Maven是一个Java工具,所以你必须安装Java环境 ... -
在UDDI注册中心里使用WSDL
2007-03-09 15:55 7322原文链接:http://www.oasis-open.org/ ... -
Axis2快速上手指南
2007-03-01 23:22 74372原文链接:http://ws.apache.org/axis2 ...
相关推荐
Mule ESB 开源框架简介 Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、...
开源ESB框架 Mule 2增加了基于Schema的spring xml配置,用于集成传统的web应用。表达式赋值被内建在运行时的消息传递中,因此头信息,Xquery或是其他的测试可以很容易的完成,不需要新建POJO或是这些活动转换器。
Mule ESB(Enterprise Service Bus,企业服务总线)是一款开源的集成平台,旨在简化企业级应用之间的数据交互。本文将围绕Mule ESB的源码进行深入探讨,揭示其核心设计理念与工作原理。 首先,`logging.conf`是日志...
**Mule ESB**是一个基于Java的开源集成平台,专注于为企业提供高性能且易于使用的集成解决方案。Mule的设计理念源自于EIP(Enterprise Integration Patterns),并且支持广泛的传输协议。 1. **Mule ESB组成结构** ...
MULE是一个开源的企业服务总线,由Mulesoft公司开发。MULE以其轻量级、高性能和易于使用的特点,在ESB领域中颇受欢迎。MULE ESB支持多种协议和标准,如HTTP、JMS、FTP、SMTP等,还提供了丰富的连接器来连接各种企业...
书中详细介绍了两种主流的开源ESB产品:Mule和ServiceMix。Mule是基于Java的轻量级ESB产品,它支持多种传输协议和数据格式,并通过插件架构提供了高度的可定制性。Mule的设计目标是易于使用、配置灵活,并且能够快速...
- **Mule**:Mule是一个非常成熟的开源ESB解决方案,以其灵活性和可扩展性著称。Mule支持多种协议和数据格式,能够轻松地与其他系统和服务集成。 - **Apache ServiceMix**:Apache ServiceMix是另一个强大的开源...
Mule ESB是MuleSoft公司推出的一款开源企业服务总线软件,它是EIP的一种实现方式。Mule ESB以其高效、灵活和易于使用的特性,被广泛应用于各种集成项目中。Mule ESB支持多种协议和标准,如HTTP、JMS、FTP、SOAP、...
### MuleEsb开源框架详解 #### 一、MuleEsb框架概览 Mule Enterprise Service Bus(ESB)是一种先进的开源框架,专为现代企业的集成需求设计。Mule ESB的核心价值在于其强大的连接性和灵活性,使企业能够轻松整合...
### ESB-Mule开源文档知识点概述 #### 一、引言 Mule 是一款非常流行的集成平台,由 MuleSoft 开发,它提供了一个企业级的服务总线 (Enterprise Service Bus, ESB) 和一个用于构建服务导向架构 (Service-Oriented ...
对商业、开源企业服务总线产品进行比较: ... 介绍了主流商业和开源ESB的发展趋势、可借鉴的地方和其缺点。 主要介绍: Oracle Service Bus WebSphere Message Broker Mule ServiceMix/FUSE ESB Synapse/WSO2 ESB
Tijs Rademakers指出,开源ESB如Mule ESB具有快速部署、简单配置和丰富的社区支持的优势。与商业ESB相比,开源ESB的安装快速,10分钟内即可拥有一个带有示例的运行环境。对于Java开发者来说,自定义功能的实现更为...
Mule ESB,全称为Mule Enterprise Service Bus,是一款强大的开源企业服务总线,用于构建灵活、可扩展的企业级集成解决方案。Mule ESB的核心功能是作为不同应用系统之间的通信桥梁,实现数据和服务的互操作性,从而...
主流的商业ESB和Mule产品的比较,完整的多方面评判各种ESB功能情况。
### MuleESB3.0中文教程知识点梳理 #### 一、Mule ESB 3.0概述 - **定位**:Mule ESB 3.0是一款轻量级的消息框架和整合平台,旨在帮助企业轻松地集成不同的系统和服务。 - **核心特性**:基于EIP(Enterprise ...
《Mule ESB Cookbook随书源码》是一个与Mule ESB相关的实践指南,它包含了大量实例代码,旨在帮助读者深入理解和应用Mule ESB这一开源企业服务总线(Enterprise Service Bus)。Mule ESB是业界广泛采用的ESB解决方案...
Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,专为构建可扩展、灵活和可靠的分布式应用程序而设计。Mule ESB 3.0是该平台的一个重要版本,提供了许多改进和新特性,使得它在处理企业...
在开源ESB与商业ESB的比较中,Tijs Rademakers(TJ)指出开源ESB如Mule ESB具有较低的入门门槛,无前期高昂许可费用,安装简单,配置文件易于理解和修改,同时拥有活跃的社区支持。开源ESB的功能与商业产品相似,甚至...
Mule ESB(Enterprise Service Bus,企业服务总线)是一种开源的企业级集成平台,由MuleSoft公司开发。它提供了一种灵活的方式来连接各种应用程序、系统和服务,促进数据的流动和交互,从而实现企业的业务流程自动化...
Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,它帮助企业将不同的系统、应用程序和服务连接在一起,实现数据的高效流转。本教程将带您入门Mule ESB项目,通过实例学习其核心概念和...