Mule ESB

这是一个最简单的mule esb入门实例,其中用了 flow ,endpoint ,transformer,component 这些组件,这些组件的配置也是最简单配置.

情景:

1.在浏览器地址栏输入http://localhost:9090/hello-mule?name=oliver&age=20,会返回"Hello oliver,your age is 10".

1.在浏览器地址栏输入http://localhost:9090/love-mule?name=oliver&age=20,会返回"Love oliver,your age is 10".

配置文件:

[html] view plain copy print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <mule xmlns="http://www.mulesoft.org/schema/mule/core"  
  3.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.       xmlns:spring="http://www.springframework.org/schema/beans"  
  5.       xmlns:http="http://www.mulesoft.org/schema/mule/http"  
  6.       xmlns:vm="http://www.mulesoft.org/schema/mule/vm"  
  7.       xsi:schemaLocation="  
  8.         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  9.         http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.2/mule.xsd  
  10.         http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/3.2/mule-http.xsd  
  11.         http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/3.2/mule-vm.xsd">  
  12.       
  13.      <!-- 将客户端传过来的Http数据转化成Person对象 -->     
  14.      <custom-transformer name="HttpDataToPersonTransformer" class="com.mule.transformer.HttpDataToPersonTransformer"/>  
  15.        
  16.      <!-- 将service操作结果用Html语言封装起来 -->  
  17.      <custom-transformer name="StringToHtmlTransformer" class="com.mule.transformer.StringToHtmlTransformer"/>  
  18.        
  19.      <!-- 设置相应内容为text/html格式 -->  
  20.      <message-properties-transformer name="setHtmlContentType" overwrite="true">  
  21.         <add-message-property key="Content-Type" value="text/html" />  
  22.         <!-- Tomcat lowercases headers, need to drop this old one too -->  
  23.         <delete-message-property key="content-type" />  
  24.     </message-properties-transformer>  
  25.        
  26.      <!-- 根据客户端传过来的内容,返回相应的Hello语句 -->  
  27.      <flow name="hello">  
  28.         <inbound-endpoint address="http://localhost:9090/hello-mule?method=sayHello" exchange-pattern="request-response" >  
  29.             <transformer ref="HttpDataToPersonTransformer"/>  
  30.             <response>  
  31.                 <transformer ref="StringToHtmlTransformer"/>  
  32.                 <transformer ref="setHtmlContentType"/>  
  33.             </response>  
  34.         </inbound-endpoint>  
  35.           
  36.         <component class="com.mule.component.WelcomService"/>  
  37.           
  38.      </flow>  
  39.        
  40.      <!-- 根绝客户端传过来的内容,返回相应的Love语句 -->  
  41.      <flow name="love">  
  42.         <inbound-endpoint address="http://localhost:9090/love-mule?method=sayLove" exchange-pattern="request-response" >  
  43.             <transformer ref="HttpDataToPersonTransformer"/>  
  44.             <response>  
  45.                 <transformer ref="StringToHtmlTransformer"/>  
  46.                 <transformer ref="setHtmlContentType"/>  
  47.             </response>  
  48.         </inbound-endpoint>  
  49.           
  50.         <component class="com.mule.component.WelcomService"/>  
  51.           
  52.      </flow>  
  53.   
  54. </mule>  


Transformer:

1.HttpDataToperson 将客户端传过来的http数据转换成component所需要Person类型

[html] view plain copy print ?
  1. package com.mule.transformer;  
  2.   
  3. import org.mule.api.MuleMessage;  
  4. import org.mule.api.transformer.TransformerException;  
  5. import org.mule.transformer.AbstractMessageTransformer;  
  6.   
  7. import com.mule.domain.Person;  
  8.   
  9. public class HttpDataToPersonTransformer extends AbstractMessageTransformer {  
  10.   
  11.     @Override  
  12.     public Object transformMessage(MuleMessage message, String outputEncoding)  
  13.             throws TransformerException {  
  14.         String name = message.getInboundProperty("name");  
  15.         String age = message.getInboundProperty("age");  
  16.         if( age == null ) {  
  17.             age = "10";  
  18.         }  
  19.                   
  20.         return new Person(name,Integer.parseInt(age));  
  21.     }  
  22.   
  23. }  
2.StringToHtmlTransformer 将component处理后返回的string类型数据,封装成html数据

[java] view plain copy print ?
  1. package com.mule.transformer;  
  2.   
  3. import org.mule.api.transformer.TransformerException;  
  4. import org.mule.transformer.AbstractTransformer;  
  5.   
  6. import com.mule.util.HtmlTemplateUtil;  
  7.   
  8. public class StringToHtmlTransformer extends AbstractTransformer {  
  9.   
  10.     @Override  
  11.     protected Object doTransform(Object src, String enc)  
  12.             throws TransformerException {  
  13.         String str = (String)src;  
  14.           
  15.         return HtmlTemplateUtil.getSimpleHtml(str);  
  16.     }  
  17.   
  18. }  
Component:

WelcomService 返回欢迎内容

[java] view plain copy print ?
  1. package com.mule.component;  
  2.   
  3. import com.mule.domain.Person;  
  4.   
  5. public class WelcomService {  
  6.       
  7.     public String sayHello( Person person ){  
  8.         return " Hello "+person.getName()+", your age is "+person.getAge();  
  9.     }  
  10.       
  11.     public String sayLove( Person person ){  
  12.         return " Love you "+person.getName()+", your age is "+person.getAge();  
  13.     }  
  14.   
  15. }  
Person类 : 
[java] view plain copy print ?
  1. package com.mule.domain;  
  2.   
  3. public class Person {  
  4.       
  5.     private String name;  
  6.     private int age;  
  7.       
  8.     public Person(){}  
  9.       
  10.     public Person(String name,int age ){  
  11.         this.name = name;  
  12.         this.age = age;  
  13.     }  
  14.   
  15.     public String getName() {  
  16.         return name;  
  17.     }  
  18.   
  19.     public void setName(String name) {  
  20.         this.name = name;  
  21.     }  
  22.   
  23.     public int getAge() {  
  24.         return age;  
  25.     }  
  26.   
  27.     public void setAge(int age) {  
  28.         this.age = age;  
  29.     }  
  30.       
  31. }  


[java] view plain copy print ?
  1. HtmlTemplateUtil 工具类:用html语句封转给定的text  
[java] view plain copy print ?
  1. package com.mule.util;  
  2.   
  3. public class HtmlTemplateUtil {  
  4.       
  5.     public static String getSimpleHtml( String text ){  
  6.         String output = "";  
  7.           
  8.         output += "<html>";  
  9.         output += "<head>";  
  10.         output += "<meta http-equiv=\"Content-Language\" content=\"en-us\"/>";  
  11.         output += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\"/>";  
  12.         output += "<title>Bookstore Administration Console</title>";  
  13.         output += "</head>";  
  14.   
  15.         output += "<body link=\"#FFFFFF\" vlink=\"#FFFFFF\" alink=\"#FFFFFF\" bgcolor=\"#990000\" text=\"#FFFFFF\">";              
  16.         output += text;              
  17.         output += "</body>";  
  18.   
  19.         output += "<br/><a href=\"/bookstore-admin/\">Return to Home Page</a>";  
  20.         output += "</html>";  
  21.           
  22.         return output;  
  23.     }  
  24.   
  25. }  



你可能感兴趣的:(mule)