0

我在找出如何在 Mule 3.2 中创建可以输入和输出文件的自定义转换器时遇到了一些麻烦。我已经对转换代码进行了原型设计,效果很好,但我找不到任何关于如何在转换器中获取文件的文档。

这是我目前所拥有的,但即使这样也会引发错误:

@ContainsTransformerMethods
  public class xmlToJson {

  @Transformer
  public File xmlIn(File file) {
    // logic to go here
    return file;
  }
}

这是引发的异常:

ERROR 2012-06-27 14:08:37,664 [main] org.mule.tooling.server.application.
ApplicationDeployer: null
java.lang.IllegalStateException: Cannot convert value of type [convert.xmlToJson]
to required type [org.mule.api.processor.MessageProcessor] for property 'messageProcessors[0]': no matching editors or conversion strategy found

我似乎找不到任何文档或教程来说明如何构建自定义转换器以接收文件。

4

2 回答 2

2

带注释的变压器通常用于自动转换,如下所述:

http://www.mulesoft.org/documentation/display/MULE3USER/Creating+Custom+Transformers

可能更适合您的用例的是通过扩展 AbstractTransformer 创建自定义转换,如下所述:

http://www.mulesoft.org/documentation/display/MULE3USER/Creating+Custom+Transformer+Class

您可以在以下链接中找到有关如何使用这两种方法的好教程

http://www.mulesoft.org/documentation/display/MULE3EXAMPLES/Invoking+Component+Methods

于 2012-06-28T20:00:25.307 回答
-1

为了创建具有自定义逻辑的自定义转换器,您需要创建扩展 AbstractMessageTransformer 的自定义类,然后您应该覆盖此抽象类中的 transformMessage()。之后,只有您可以在任何转换器标签中提供您的自定义类。带注释的转换器将在 Mule 中注册,如果 Mule 需要从 sourceType 转换为 returnType,它们将被自动调用。

@ContainsTransformerMethods
public class MyCustomTransformers
{
 @Transformer
  public URL stringToURL(String string) throws MalformedURLException
   {
     return new java.net.URL(string);
   }
}

这里 sourceType 是 String,returnType 是 URL。因此,每当 Mule 本身需要从 String 转换为 URL 时,都会使用这个转换器。

这是在 Mule 中创建自定义转换器的一个很好的链接

http://javacodinggeeks.blogspot.in/2015/05/writing-custom-transformers-in-mule.html

于 2015-04-07T08:44:59.600 回答