WEB开发网
开发学院软件开发Java 使用Mule ESB与Groovy编排RESTful服务 阅读

使用Mule ESB与Groovy编排RESTful服务

 2009-12-01 00:00:00 来源:WEB开发网   
核心提示: Mule对REST的支持 Mule提供了一种简单而又强大的方式与RESfFul服务交互,那就是Mule RESTPack,使用Mule ESB与Groovy编排RESTful服务(2),Mule RESTPack提供了一整套连接器与完整的指南以帮助用户创建新的RESTful应用,在本文撰写之际,

Mule对REST的支持

Mule提供了一种简单而又强大的方式与RESfFul服务交互,那就是Mule RESTPack。

Mule RESTPack提供了一整套连接器与完整的指南以帮助用户创建新的RESTful应用。在本文撰写之际,该软件包提供了三种传送器,分别基于三种流行的REST框架:Abdera、Jersey及Restlet。这样我们就可以轻松公开新的资源,但如何集成现有的REST资源呢?

好消息是Mule标准的脚本模块所提供的Groovy支持有助于Mule HTTP传送器的使用,这样我们就可以成功与RESTful服务交互了。 向Mule发送POST请求

首先来看看第一个交互。HTTP向特定的资源发送一个XML实体来创建订单,如以下程序片段所示:

POST /orders HTTP 1.1 
... 
<order xmlns='urn:acme:order:3:1'> 
  <customerId>123456</customerId> 
  <productId>P987C</productId> 
  <quantity>2</quantity> 
</order> 

如果成功服务器的响应如下:

201 Created 
Location: http://acme.com/order/O13579 
... 
<order id='O13579' /> 

在Mule中,我们可以通过一个简单的HTTP输出端点(outbound endpoint)实现该交互。注意到交互本身是通过向订单创建服务发送一个包含请求值(客户与产品ID、数量)的映射而触发的。该服务如下所示:

<service name="OrderCreationService"> 
 <inbound> 
  <inbound-endpoint ref="OrderCreationQueue" /> 
 </inbound> 
 <outbound> 
  <chaining-router> 
    <http:outbound-endpoint synchronous="true" 
       responseTimeout="15" method="POST" 
       host="${acme.order.hostname}" 
       port="${acme.order.port}" path="orders" 
       user="${acme.order.username}" 
       password="${acme.order.password}" 
       contentType="application/vnd.acme+xml" encoding="UTF-8"> 
       <transformers> 
        <transformer ref="OrderMapToMicroformat" /> 
       </transformers> 
       <response-transformers> 
         <message-properties-transformer> 
            <add-message-property key="OrderPlaced" 
              value="#[groovy:message.getStringProperty('http.status','ERR')=='201']" /> 
            <add-message-property 
              key="OrderResourceLocation" 
              value="#[groovy:message.getStringProperty('Location','')]" /> 
         </message-properties-transformer> 
         <object-to-string-transformer /> 
       </response-transformers> 
     </http:outbound-endpoint> 
     <outbound-endpoint ref="OrderCreationResultQueue" /> 
  </chaining-router>   
 </outbound> 
</service> 

上一页  1 2 3 4 5 6  下一页

Tags:使用 Mule ESB

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接