最近刚要开始学习Mule,在此将BookStore作为示例记录下来。在例子之前,首先将mule的环境配置完毕,有助于减少不必要的麻烦。
bookstore中有三个小工程,我分别把它们转成了eclips工程,下面是源代码,加了少量的注释,由于其所必须的jar文件过大,将其删除。
附件中的三个工程分别为:
api--定义webservice接口;
admin-web--作为该示例主要的工程,采用mule方式对外提供webservice服务,类似于bs结构中的server端,其作用不言而喻;
bookstore-web--主要是通过webservice从admin-web中获取必要的数据信息。
admin-web、bookstore-web中都会用到api工程的jar包,只要将这两个工程中的target目录下的bookstore-admin,bookstore发布到tomcat中即可访问,当然要把其需要的jar包分别放入对应的目录中才可。
1.bookstore-admin
<service name="CatalogService">
<inbound>
<!-- Public interface,接收来自于bookstore的请求 -->
<inbound-endpoint address="cxf:http://0.0.0.0:8777/services/catalog" />
<!-- Administration interface 接收来自admin.jsp页面的请求-->
<inbound-endpoint address="servlet://catalog">
<transformers>
<!-- Extract parameters from HTTP Request -->
<servlet:http-request-to-parameter-map />
<!-- Convert request parameters to Book object -->
<custom-transformer class="org.mule.example.bookstore.transformers.ParameterMapToBook"/>
</transformers>
<response-transformers>
<!-- Format response to be a nice HTML page -->
<custom-transformer class="org.mule.example.bookstore.transformers.AddBookResponse"/>
<!-- Force text/html, otherwise it falls back to request props, which have form-encoded one -->
<transformer ref="setHtmlContentType"/>
</response-transformers>
</inbound-endpoint>
</inbound>
<component>
<singleton-object class="org.mule.example.bookstore.CatalogServiceImpl" />
</component>
</service>
通过上面的代码可以看到添加book的流程为
servlet://catalog(接收来自admin.jsp的请求)->ParameterMapToBook(转换为book)->CatalogServiceImpl(添加book)->AddBookResponse(生成需要输出的信息)->setHtmlContentType(设定格式)。
2.bookstore
// Invoke the CXF web service
JaxWsProxyFactoryBean pf = new JaxWsProxyFactoryBean();
pf.setServiceClass(CatalogService.class);
pf.setAddress(CatalogService.URL);
CatalogService catalog = (CatalogService) pf.create();
Collection <Book> books = catalog.getBooks();
用户提交需搜索的书籍,系统调用bookstore-admin的webservice服务(http://0.0.0.0:8777/services/catalog)获取书籍信息与搜索的书籍比对,符合条件列出来。
当用户下单时,调用下面定义好的流程,最后调用邮件服务、消息服务。
<service name="OrderService">
<inbound>
<!-- Public interface ,接收来自于bookstore的请求 -->
<inbound-endpoint address="cxf:http://0.0.0.0:8777/services/order" />
</inbound>
<!-- 指定由下面的实现类来完成这个请求 -->
<component>
<singleton-object class="org.mule.example.bookstore.OrderServiceImpl" />
</component>
<outbound>
<multicasting-router>
<vm:outbound-endpoint path="emailNotification"/>
<vm:outbound-endpoint path="dataWarehouse"/>
</multicasting-router>
</outbound>
</service>
邮件服务,别忘记将下面的无效邮箱换成可用的邮箱,否则无法发送邮件。
<service name="EmailNotificationService">
<inbound>
<vm:inbound-endpoint path="emailNotification" />
</inbound>
<outbound>
<pass-through-router>
<!-- 成功发送邮件 -->
<smtp:outbound-endpoint user="username" password="password" host="smtp.gmail.com"
from="username@gmail.com" subject="Your order has been placed!">
<transformers>
<custom-transformer class="org.mule.example.bookstore.transformers.OrderToEmailTransformer" />
<email:string-to-email-transformer />
</transformers>
</smtp:outbound-endpoint>
</pass-through-router>
</outbound>
</service>
消息服务, 在DataWarehouse组装消息完毕后将其发送到vm://statistics
<service name="DataWarehouse">
<inbound>
<vm:inbound-endpoint path="dataWarehouse"/>
</inbound>
<component>
<singleton-object class="org.mule.example.bookstore.DataWarehouse" />
</component>
<outbound>
<pass-through-router>
<!-- 消息发往vm://statistics,以供bookstore-admin获取信息 -->
<outbound-endpoint ref="stats" transformer-refs="setHtmlContentType"/>
</pass-through-router>
</outbound>
</service>
一切完毕之后,可以回到bookstore-admin中点击首页中的Get Stats按钮从消息队列获取DataWarehouse组装的消息,基本就是这个样子了。
- 大小: 41.5 KB
- 大小: 23.7 KB
分享到:
相关推荐
本篇文章将详细介绍如何通过具体的示例来了解Mule ESB 的基本使用方法,尤其适合初学者入门学习。 #### 二、Mule Studio 安装与配置 ##### 1. 安装前的准备 在安装 Mule Studio 之前,需要先确保已经完成了以下...
本教程将带您入门Mule ESB项目,通过实例学习其核心概念和操作。 首先,我们需要理解ESB的基本概念。ESB作为一个中间件,它的主要作用是提供一种松耦合的方式,使得各个系统之间可以通过标准接口进行通信,而不是...
Mule 是一个强大的企业服务总线(ESB)和集成平台,它允许不同的系统和应用程序之间进行通信。...这两个简单的例子为理解 Mule 的更复杂集成提供了基础,并展示了如何利用 Mule 实现灵活、可扩展的企业级集成。
为了进一步学习,你需要解压"soa_mule-samples",使用Anypoint Studio(Mule的集成开发环境)打开示例项目。每个示例通常包含一个或多个Mule应用配置文件(`.mule`或`.xml`),这些文件定义了端点、数据流和其他组件...
"Mule3.4入门学习" 本文将对Mule3.4进行入门学习,涵盖Mule环境搭建、Webservice的发布、JMS消息通信、ftp、File应用、协议转换等知识点。 一、Mule环境搭建 Mule环境的搭建需要JDK的支持,包括下载、安装、配置...
在本文中,我们将通过一个简单的小例子来介绍如何使用Mule ESB进行开发。 首先,我们需要进行环境配置。安装Mule Studio,它是Mule ESB的集成开发环境。确保已经安装了JDK,版本至少为1.6u26或1.7u13,并设置了JAVA...
【Mule学习资料:Java轻量级框架】 Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的集成平台,专为简化企业系统集成而设计。它属于Java轻量级框架,允许开发者轻松地连接各种应用程序和服务,实现...
Mule的下载地址是http://www.mulesoft.org/display/COMMUNITY/Home,当前最新版本是2.2。下载完成后,得到一个名为mule-standalone-{version}.zip的压缩文件。接下来,需要将其解压缩到指定的目录下,例如D:\soft...
Arguments标签中,Program arguments中填入-config配置文件路径,如-config/home/shin/mule-3.x/examples/echo/src/main/app/mule-config.xml(这里使用Mule的echo例子来测试)。点击Apply后点击Debug运行。 测试...
### Mule 学习文档知识点概述 #### 一、Mule ESB 基础配置理解(Understanding Mule Configuration) Mule ESB 的配置是基于 XML 的,这使得开发者能够清晰地定义应用间的集成逻辑。在《Mule3 User Guide》中,...
包含http、cxf、vm、sap、activeMq、ftp、file、poll、Smtp、attachment、melExpression、Java、template节点的使用示例等。
在你下载的压缩包文件“4401OS_Code”中,包含了书中所有的示例代码,这些代码是学习和实践Mule ESB的关键资源。 Mule ESB是一个开源的集成平台,它提供了强大的连接、转换和管理服务的能力,适用于构建灵活且可...
《Mule in Action》是关于Mule ESB的实战指南,该书深入浅出地介绍了如何使用Mule这一强大的企业服务总线(ESB)进行应用程序集成。Mule ESB以其用户基数庞大、文档详尽以及社区活跃而备受赞誉,是企业级集成解决...