`

mule转换器

    博客分类:
  • mule
阅读更多

提供基础层次上的的协议类型转换、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 ESB手册-中文版

    文档详细介绍了Mule Studio的各个部件,包括端点(Endpoints)、组件(Components)、转换器(Transformers)、过滤器(Filters)、流程控制(Flow Controls)、路由器(Routers)和活动范围(Scopes)等核心组件。...

    Mule3.4入门学习

    "Mule3.4入门学习" 本文将对Mule3.4进行入门学习,涵盖Mule环境搭建、Webservice的发布、JMS消息通信、ftp、File应用、协议转换等...要使用协议转换,需要配置Mule的协议转换器,例如HTTP协议转换器和JMS协议转换器。

    mule文档详解 mule

    - **连接器**: 连接器是Mule与外部系统交互的具体实现,如数据库连接器、文件系统连接器等。 **4. 流程配置与工作流程** Mule ESB使用XML或图形化的Mule Studio进行配置。开发者可以创建数据流,定义消息如何在...

    mule esb开发手册

    Mule 提供了丰富的内置转换器,同时也支持用户创建自定义转换器。 ### 创建服务对象和转换器使用注解 Mule ESB 支持使用注解来创建服务对象和转换器,这是一种更加灵活和简洁的编程方式。注解可以用于声明服务接口...

    mule web service exsample

    它可能包含一个或多个消息处理器,如HTTP监听器(用于接收请求)、数据转换器(如GRF文件中的图形化流程定义)、以及业务逻辑。 4. **GRF文件解析** "list_map_to_pojo_2.grf", "list_map_to_pojo.grf", 和 "list_...

    mule学习文档

    1. **转换器配置参考**:提供各种转换器的配置参考,帮助开发者正确使用转换器。 2. **原生 JSON 支持**:介绍 Mule 对 JSON 的原生支持。 3. **XML 格式化转换器**:解释如何使用 XML 格式化转换器来美化 XML 输出...

    Mule原理图和ESB设计

    通过"mule-ESB设计.rar"和"Mule3.0原理图.rar"这两个文件,你可以深入理解Mule ESB的原理和设计思路,包括如何构建流处理、配置连接器、处理异常以及了解Mule 3.0的关键改进。这些知识对于任何希望在企业集成领域...

    mule ESB 3 user guider

    这部分内容涵盖了如何创建自定义转换器,并提供了转换器配置的参考信息。同时,手册也强调了文档编写的重要性,以保证转换器的正确使用和维护。 11. 集成和提交Cloud Connector: 手册中还详细讲解了如何构建和测试...

    mule-standalone-3.9.0.zip

    - **转换能力**:Mule ESB支持数据格式转换,如XML到JSON,使得不同系统间的数据交换更加简单。 - **流处理**:通过数据流,Mule可以定义处理逻辑,实现数据的接收、转换和发送。 - **安全集成**:Mule ESB提供了...

    mule in action 即mule实战源码

    3. **预建连接器**:Mule提供了大量预建的连接器,可以轻松连接到各种外部系统,如数据库、Web服务、文件系统等。 4. **云集成**:Mule ESB支持云环境,可以与AWS、Azure、Google Cloud等主流云平台无缝集成。 5. **...

    MULE ESB-4.1社区办运行环境

    它们包含了一系列连接器、处理器和过滤器,用于接收、转换、处理和发送消息。 4. **Connectors**: 连接器是Mule ESB的关键部分,用于与各种系统和协议进行交互,如HTTP、FTP、JMS、数据库等。在MULE ESB-4.1中,...

    MuleStudio用户手册.doc

    - Xml/Json-to-Object 转换器:将 XML 或 JSON 数据转换为 Java 对象。 - **过滤器(Filters)**: - 自定义过滤器:用于实现自定义的过滤逻辑。 - 异常过滤器:处理流程中发生的异常情况。 - 表达式过滤器:...

    MULE用户指南3.3

    理解这些基本概念是使用MULE的基础,例如,消息代理处理和传递数据,连接器负责与外部系统的交互,传输定义了通信协议,数据映射则用于转换不同格式的数据,流程控制则指导消息如何在MULE中流动。 2. **MULE配置与...

    muleide-2.1.1

    2. **数据转换**:内置了丰富的数据格式转换器,如XML到JSON、CSV到XML等,简化了数据格式的转换过程。 3. **连接器**:Mule ESB提供了一套丰富的连接器,可以轻松地连接到各种系统,如数据库、Web服务、文件系统等...

    mule in action

    Mule ESB的转换器功能帮助我们实现不同数据格式间的转换,如XML到JSON,或者CSV到Java对象。 6. **消息处理器(Message Processor)**:这些组件处理消息,执行特定任务,如路由、过滤、异常处理等。了解并熟练使用...

    mule_examples.rar_mule_mule 开发_mule-2.2.1-src

    在学习Mule ESB的过程中,重要的是理解其核心组件,例如Message Processors(消息处理器)、Connectors(连接器)和Transformers(转换器)。消息处理器负责控制流程的执行,如选择、过滤、分发消息;连接器用于与...

    MuleStudio

    它们包括连接器、转换器和处理器等组件。 - **Anypoint Connectors**:Mule提供了丰富的预建连接器,如HTTP、FTP、JDBC、Salesforce等,使得与各种系统集成变得简单。 - **Maven集成**:Mule项目可以使用Maven进行...

Global site tag (gtag.js) - Google Analytics