创建自定义转换器(Creating Custom Transformers)
作者:wuwenyu | 出处:博客园 | 2011/11/30 9:38:29 | 阅读16次 Creating Custom Transformers
一个自定义转换器是实现了org.mule.api.transformer.Transformer接口的用户自定义类。你的类可以根据需要继承
AbstractTransformer 或者 AbstractMessageAwareTransformer
该章节将更加详细的描述如何创建一个自定义转换器。
Mule ESB 提供了很多标准化的转换器,包括XML转换器(例如XML转换成Object,XSLT,和DOM转换成XML),
加密转换器能够对数据进行加密和解密,压缩转换器能够对数据进行压缩和解压缩,还有更多。可以参考
Using Transformers提供了一个标准转换器的列表,使用图形化界面创建你的数据转换器,详情参考
Mule Data Integrator.
转换器类(Transformer Classes)AbstractTransformer 允许你访问和转换你的源数据而且可以根据需要指定你使用的编码。它定义了一些方法来控制
转换器所能支持的数据类型,并且验证预期的返回值类型,留给你的只是一个简单的doTransform()方法去实现。
在Hello World example例子中定义了一个名为StdinToNameString自定义转换器,从字符串中删除换行符和新行,package org.mule.example.hello;import org.mule.api.transformer.TransformerException;import org.mule.transformer.AbstractTransformer;public class StdinToNameString extends AbstractTransformer{ public StdinToNameString(){ super(); this.registerSourceType(String.class); this.setReturnClass(NameString.class);} public Object doTransform(Object src, String encoding) throws TransformerException{NameString nameString = new NameString(); String name = (String) src;nameString.setName(name.replaceAll("\r", "").replaceAll("\n", "").trim()); return nameString;}}
这个转换器定义如下:<custom-transformer name="StdinToNameString" class="org.mule.example.hello.StdinToNameString" /> ...<service name="GreeterUMO"> <inbound> <stdio:inbound-endpoint system="IN" transformer-refs="StdinToNameString" /> </inbound>...原文地址:http://www.mulesoft.org/documentation/display/MULE2USER/Creating+Custom+Transformers