`

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
分享到:
评论

相关推荐

    json-sanitizer-transformer:净化 JSON 的 Mule ESB 转换器

    JSON 消毒转换器 JSON Sanitizer 转换器用作不受信任的 JSON 字符串的第一遍。 它利用了 OWASP 的 JSON Sanitizer 项目。 Mule 支持的版本 骡子 3.5.x 安装 对于 beta 连接器,您可以下载源代码并使用 DevKit 构建...

    ESB开源系统mule

    开源ESB框架 Mule 2增加了基于Schema的spring xml配置,用于集成传统的web应用。表达式赋值被内建在运行时的消息传递中,因此头信息,Xquery或是其他的测试可以很容易的完成,不需要新建POJO或是这些活动转换器。

    MuleSmooksEDItoXML:使用 smooks 和 MULE ESB 将 EDI 转换为 XML

    使用 smooks 转换器将 edi 转换为 xml 出站文件。 骡子组件 数据库 mysql 配置 [db 参数化查询] 文件入站 Java组件 文件出站 吸烟变压器 跑步 作为 mule 服务器运行或部署到 mule 服务器作为 Mule Deployable ...

    c24-mule-connector

    一个允许C24 iO用于解析,验证,转换和封送消息的连接器。 安装 通过标准Eclipse安装机制将Mule C24连接器安装到Anypoint Studio中。 如果要安装从本地来源构建的连接器,请使用UpdateSite.zip或创建一个指向目标/ ...

    mkmatlab代码-ADC:模数转换器

    控制器 此存储库包含用于 MULE 的 ADC 的 SIMULINK 模型。 建造 该模型必须使用 Linaro 工具链导出 C 代码,并使用 Simulink 的代码生成功能导出项目中的当前设置。 一旦生成(进入ADC_ert_rtw\ ),然后: diff ...

    MuleWorkFlowExample:Mule ESB 实现

    第一个流程:Ftp 连接器侦听 FTP 服务器位置并期望和 xml 文件,这会将 xml 转换为 JAXBObject(这部分是为了学习目的),将对象转换为 json,然后转换为 DbObject,最终使用 mongo 持久化在 mongoDB 中Mule 中的...

    google-currency-connector:一个 Mule DevKit Connector 项目,使用 Google Finance HTML 表单进行实时货币转换

    Mule模块货币使用此连接器将一种货币转换为另一种货币。 它将连接到提供以下参数: 要转换的价格值(BigDecimal) 从货币(字符串) - 它使用谷歌方面给出的缩写(例如欧元,美元,AED,...) To currency (String) ...

    mule-object-store-jdbc

    您可以选择设置一个转换为Serializable的转换器。 例如配置: &lt; spring : bean name = " jdbcObjectStore " class = " ...

    MuleXLStoXML:骡子 XLS 到 XML

    CSV 文件转换为 java 对象 [CSV - TO- - Java] 使用 jaxb-xml-to-object-transformer 读取 java 对象转换为 xml 通过电子邮件发送 XML骡子组件文件连接器上下文属性位置文件夹文件入站消息属性转换器Java 组件 ...

    mule-module-cb2java:Mule Copybook2Java 模块

    Mule Copybook2Java 模块该模块提供了使用 CB2Java 库将 Cobol Copybook 解析为 Java 类型的转换器。安装和使用有关使用和安装的信息,您可以在查看我们的文档。报告问题我们使用 GitHub:Issues 来跟踪此模块的问题...

    mule-message-injector:骡子试驾

    骡子消息注入器 骡子试驾。 接受 GET 或 POST 到 。 需要在localhost:61616可用的代理。 GET 会返回一些 JSON,告诉您路径和使用的任何 URL 参数。 POST 使用队列通过 JMS 请求-响应子流推送调用,然后使用类似的 ...

    MuleRestSoapClients:MuleRestSoapClients

    使用REST和SOAP客户端以及MULE ESB发送消息的演示这个项目从输入文件夹中读取Excel工作表,并将其转换为JAVA对象[EXCEL-TO -JAVA对象] 使用jaxb-xml-to-object-transformer读取转换为xml的java对象调用REST和SOAP...

Global site tag (gtag.js) - Google Analytics