提供基础层次上的的协议类型转换、XML<->Java转换、编码、压缩、加密转换。业务级转换由用户实现。
几个可能用到的转换器
自定义转换器
下面是发布一个接受string参数的ws,将参数转换成对象后调用并传递参数另一个ws的例子。
mule配置文件
<!-- 声明转换器 -->
<custom-transformer name="stringToUser" class="com.oecp.mule.umo.helloworld.StringToUserObject" />
<custom-transformer name="objectToString" class="com.oecp.mule.umo.helloworld.ObjectToString"></custom-transformer>
<flow name="helloworld">
<!--绑定入站地址-->
<inbound-endpoint address="http://localhost:7007/services/Echo" exchange-pattern="request-response"/>
<cxf:jaxws-service serviceClass="com.oecp.mule.umo.helloworld.HelloWorld"/>
<!--指定处理单元-->
<component class="com.oecp.mule.umo.helloworld.HelloWorldImpl" />
<!--参数转换 -->
<transformer ref="stringToUser"/>
<!--出站-->
<outbound-endpoint address="http://localhost:65082/services/EchoUMO" responseTransformer-refs="objectToString">
<!--ws客户端-->
<cxf:jaxws-client clientClass="com.oecp.wsclient.echo.EchoService" operation="getPower" port="EchoPort" wsdlLocation="classpath:EchoUMO.wsdl">
</cxf:jaxws-client>
</outbound-endpoint>
</flow>
转换器 ToUserObject.java
package org.mule.example.transformer;
import org.mule.api.transformer.TransformerException;
import org.mule.example.echo.User;
import org.mule.transformer.AbstractTransformer;
import org.mule.transformer.types.DataTypeFactory;
public class ToUserObject extends AbstractTransformer {
public ToUserObject(){
this.registerSourceType(DataTypeFactory.STRING);
this.registerSourceType(DataTypeFactory.create(User.class));
}
@Override
protected Object doTransform(Object src, String encoding)
throws TransformerException {
String s[] = ((String)src).split(",");
User u = new User();
u.setUid(s[0]);
return u;
}
}
这种转换,必须要在服务器端有对应类型才能注册并转换,调用ws还要通过wsdl2java反向生成java文件部署后才能使用,比较繁琐。平台应用的话易用性比差一些。
动态脚本转换器
<!--代理模式测试。添加入站出战转换器-->
<ws:proxy name="weather-forecast-ws-proxy-transformers"
inboundAddress="http://localhost:8090/weather-forecast/4"
transformer-refs="object-to-string-transformer zip-code-changer-1"
responseTransformer-refs="object-to-string-transformer zip-code-changer-2"
outboundEndpoint-ref="target-ws-endpoint" />
<!-- 转换器-->
<object-to-string-transformer name="object-to-string-transformer" />
<script:transformer name="zip-code-changer-1">
<script:script engine="groovy">
println("============================zip-code-changer-1=================================")
result = org.apache.commons.lang.StringEscapeUtils.unescapeHtml("$payload")
</script:script>
</script:transformer>
<script:transformer name="zip-code-changer-2">
<script:script engine="groovy">
println("============================zip-code-changer-2=================================")
result = org.apache.commons.lang.StringEscapeUtils.unescapeHtml("$payload")
</script:script>
</script:transformer>
<!--简单服务-->
<simple-service name="weather-forecaster-ws"
address="http://localhost:6090/weather-forecast" component-class="org.mule.test.integration.tck.WeatherForecaster"
type="jax-ws" />
动态脚本内可以连接数据库读取配置信息,调用java类解析wsdl文件,拼装成对应的soap消息信封。
xslt转换器
通过配置XSLT模板对数据进行数据格式和数据的转换
<xml-entity-decoder-transformer name="XmlDecoder" />
<xm:xslt-transformer name="XsltRest" xsl-file="xsl/rest-stock.xsl" />
<xm:xml-to-object-transformer name="XmlToObject" />
<flow name="HTTP input">
<http:inbound-endpoint host="localhost" port="48309" path="stockquote">
<http:body-to-parameter-map-transformer />
<response>
<object-to-string-transformer />
</response>
</http:inbound-endpoint>
<flow-ref name="REST"/>
<transformer ref="XmlToObject" />
</flow>
<flow name="REST">
<transformer ref="ExtractSymbol" />
<http:rest-service-component serviceUrl="http://www.webservicex.net/stockquote.asmx/GetQuote"
httpMethod="POST">
<http:payloadParameterName value="symbol" />
</http:rest-service-component>
<transformer ref="XmlDecoder" />
<transformer ref="XsltRest" />
</flow>
xslt模板
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:sq="http://www.webserviceX.NET/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/sq:string/sq:StockQuotes/sq:Stock">
<org.mule.example.stockquote.StockQuote>
<name><xsl:value-of select="sq:Name"/></name>
<symbol><xsl:value-of select="sq:Symbol"/></symbol>
<date><xsl:value-of select="sq:Date"/><xsl:text> </xsl:text><xsl:value-of select="sq:Time"/></date>
<change><xsl:value-of select="sq:Change"/></change>
<last><xsl:value-of select="sq:Last"/></last>
<open><xsl:value-of select="sq:Open"/></open>
<high><xsl:value-of select="sq:High"/></high>
<low><xsl:value-of select="sq:Low"/></low>
<volume><xsl:value-of select="sq:Volume"/></volume>
<previousClose><xsl:value-of select="sq:PreviousClose"/></previousClose>
</org.mule.example.stockquote.StockQuote>
</xsl:template>
</xsl:stylesheet>
摘自http://prj.oecp.cn/projects/oecp-platform/wiki/%E8%BD%AC%E6%8D%A2%E5%99%A8
分享到:
相关推荐
文档详细介绍了Mule Studio的各个部件,包括端点(Endpoints)、组件(Components)、转换器(Transformers)、过滤器(Filters)、流程控制(Flow Controls)、路由器(Routers)和活动范围(Scopes)等核心组件。...
"Mule3.4入门学习" 本文将对Mule3.4进行入门学习,涵盖Mule环境搭建、Webservice的发布、JMS消息通信、ftp、File应用、协议转换等...要使用协议转换,需要配置Mule的协议转换器,例如HTTP协议转换器和JMS协议转换器。
- **连接器**: 连接器是Mule与外部系统交互的具体实现,如数据库连接器、文件系统连接器等。 **4. 流程配置与工作流程** Mule ESB使用XML或图形化的Mule Studio进行配置。开发者可以创建数据流,定义消息如何在...
Mule 提供了丰富的内置转换器,同时也支持用户创建自定义转换器。 ### 创建服务对象和转换器使用注解 Mule ESB 支持使用注解来创建服务对象和转换器,这是一种更加灵活和简洁的编程方式。注解可以用于声明服务接口...
它可能包含一个或多个消息处理器,如HTTP监听器(用于接收请求)、数据转换器(如GRF文件中的图形化流程定义)、以及业务逻辑。 4. **GRF文件解析** "list_map_to_pojo_2.grf", "list_map_to_pojo.grf", 和 "list_...
1. **转换器配置参考**:提供各种转换器的配置参考,帮助开发者正确使用转换器。 2. **原生 JSON 支持**:介绍 Mule 对 JSON 的原生支持。 3. **XML 格式化转换器**:解释如何使用 XML 格式化转换器来美化 XML 输出...
通过"mule-ESB设计.rar"和"Mule3.0原理图.rar"这两个文件,你可以深入理解Mule ESB的原理和设计思路,包括如何构建流处理、配置连接器、处理异常以及了解Mule 3.0的关键改进。这些知识对于任何希望在企业集成领域...
这部分内容涵盖了如何创建自定义转换器,并提供了转换器配置的参考信息。同时,手册也强调了文档编写的重要性,以保证转换器的正确使用和维护。 11. 集成和提交Cloud Connector: 手册中还详细讲解了如何构建和测试...
- **转换能力**:Mule ESB支持数据格式转换,如XML到JSON,使得不同系统间的数据交换更加简单。 - **流处理**:通过数据流,Mule可以定义处理逻辑,实现数据的接收、转换和发送。 - **安全集成**:Mule ESB提供了...
3. **预建连接器**:Mule提供了大量预建的连接器,可以轻松连接到各种外部系统,如数据库、Web服务、文件系统等。 4. **云集成**:Mule ESB支持云环境,可以与AWS、Azure、Google Cloud等主流云平台无缝集成。 5. **...
它们包含了一系列连接器、处理器和过滤器,用于接收、转换、处理和发送消息。 4. **Connectors**: 连接器是Mule ESB的关键部分,用于与各种系统和协议进行交互,如HTTP、FTP、JMS、数据库等。在MULE ESB-4.1中,...
- Xml/Json-to-Object 转换器:将 XML 或 JSON 数据转换为 Java 对象。 - **过滤器(Filters)**: - 自定义过滤器:用于实现自定义的过滤逻辑。 - 异常过滤器:处理流程中发生的异常情况。 - 表达式过滤器:...
理解这些基本概念是使用MULE的基础,例如,消息代理处理和传递数据,连接器负责与外部系统的交互,传输定义了通信协议,数据映射则用于转换不同格式的数据,流程控制则指导消息如何在MULE中流动。 2. **MULE配置与...
2. **数据转换**:内置了丰富的数据格式转换器,如XML到JSON、CSV到XML等,简化了数据格式的转换过程。 3. **连接器**:Mule ESB提供了一套丰富的连接器,可以轻松地连接到各种系统,如数据库、Web服务、文件系统等...
Mule ESB的转换器功能帮助我们实现不同数据格式间的转换,如XML到JSON,或者CSV到Java对象。 6. **消息处理器(Message Processor)**:这些组件处理消息,执行特定任务,如路由、过滤、异常处理等。了解并熟练使用...
在学习Mule ESB的过程中,重要的是理解其核心组件,例如Message Processors(消息处理器)、Connectors(连接器)和Transformers(转换器)。消息处理器负责控制流程的执行,如选择、过滤、分发消息;连接器用于与...
它们包括连接器、转换器和处理器等组件。 - **Anypoint Connectors**:Mule提供了丰富的预建连接器,如HTTP、FTP、JDBC、Salesforce等,使得与各种系统集成变得简单。 - **Maven集成**:Mule项目可以使用Maven进行...