`
lonely
  • 浏览: 3210 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Mule2.2 BookStore例子学习

    博客分类:
  • Mule
阅读更多
最近刚要开始学习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组装的消息,基本就是这个样子了。
  • api.rar (11.8 KB)
  • 下载次数: 122
  • 大小: 41.5 KB
  • 大小: 23.7 KB
0
0
分享到:
评论
1 楼 cqzmj 2010-05-10  
你好,我在运行bookstore例子的时候,当我点击search,告知catalog.jsp页面45行中的Collection <Book> books = catalog.getBooks()的getBooks()是Unknown Source,请问是怎么回事呢?谢谢!

相关推荐

    Mule ESB 开发例子

    本篇文章将详细介绍如何通过具体的示例来了解Mule ESB 的基本使用方法,尤其适合初学者入门学习。 #### 二、Mule Studio 安装与配置 ##### 1. 安装前的准备 在安装 Mule Studio 之前,需要先确保已经完成了以下...

    mule esb 项目 例子 入门

    本教程将带您入门Mule ESB项目,通过实例学习其核心概念和操作。 首先,我们需要理解ESB的基本概念。ESB作为一个中间件,它的主要作用是提供一种松耦合的方式,使得各个系统之间可以通过标准接口进行通信,而不是...

    mule例子分析

    Mule 是一个强大的企业服务总线(ESB)和集成平台,它允许不同的系统和应用程序之间进行通信。...这两个简单的例子为理解 Mule 的更复杂集成提供了基础,并展示了如何利用 Mule 实现灵活、可扩展的企业级集成。

    mule 具体例子(代码)

    为了进一步学习,你需要解压"soa_mule-samples",使用Anypoint Studio(Mule的集成开发环境)打开示例项目。每个示例通常包含一个或多个Mule应用配置文件(`.mule`或`.xml`),这些文件定义了端点、数据流和其他组件...

    Mule3.4入门学习

    "Mule3.4入门学习" 本文将对Mule3.4进行入门学习,涵盖Mule环境搭建、Webservice的发布、JMS消息通信、ftp、File应用、协议转换等知识点。 一、Mule环境搭建 Mule环境的搭建需要JDK的支持,包括下载、安装、配置...

    Mule ESB开发一个小例子

    在本文中,我们将通过一个简单的小例子来介绍如何使用Mule ESB进行开发。 首先,我们需要进行环境配置。安装Mule Studio,它是Mule ESB的集成开发环境。确保已经安装了JDK,版本至少为1.6u26或1.7u13,并设置了JAVA...

    mule学习资料java轻量级框架

    【Mule学习资料:Java轻量级框架】 Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的集成平台,专为简化企业系统集成而设计。它属于Java轻量级框架,允许开发者轻松地连接各种应用程序和服务,实现...

    mule开发环境搭建和部署

    Mule的下载地址是http://www.mulesoft.org/display/COMMUNITY/Home,当前最新版本是2.2。下载完成后,得到一个名为mule-standalone-{version}.zip的压缩文件。接下来,需要将其解压缩到指定的目录下,例如D:\soft...

    Mule源码下载,编译成eclipse项目,发布代码

    Arguments标签中,Program arguments中填入-config配置文件路径,如-config/home/shin/mule-3.x/examples/echo/src/main/app/mule-config.xml(这里使用Mule的echo例子来测试)。点击Apply后点击Debug运行。 测试...

    mule学习文档

    ### Mule 学习文档知识点概述 #### 一、Mule ESB 基础配置理解(Understanding Mule Configuration) Mule ESB 的配置是基于 XML 的,这使得开发者能够清晰地定义应用间的集成逻辑。在《Mule3 User Guide》中,...

    mule 学习.zip

    包含http、cxf、vm、sap、activeMq、ftp、file、poll、Smtp、attachment、melExpression、Java、template节点的使用示例等。

    mule esb cookbook 的所有例子代码

    在你下载的压缩包文件“4401OS_Code”中,包含了书中所有的示例代码,这些代码是学习和实践Mule ESB的关键资源。 Mule ESB是一个开源的集成平台,它提供了强大的连接、转换和管理服务的能力,适用于构建灵活且可...

    mule in action 即mule实战源码

    《Mule in Action》是关于Mule ESB的实战指南,该书深入浅出地介绍了如何使用Mule这一强大的企业服务总线(ESB)进行应用程序集成。Mule ESB以其用户基数庞大、文档详尽以及社区活跃而备受赞誉,是企业级集成解决...

Global site tag (gtag.js) - Google Analytics