有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Mule自定义转换器

在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

我似乎找不到任何文档或教程来说明如何构造一个自定义的转换器以容纳文件


共 (2) 个答案

  1. # 1 楼答案

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

    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

  2. # 2 楼答案

    为了使用自定义逻辑创建自定义转换器,您需要创建扩展AbstractMessageTransformer的自定义类,然后您应该从该抽象类重写transformMessage()。之后,只有您可以在任何transformer标记中提供自定义类。 带注释的转换器将在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本身需要从字符串转换为URL时,就会使用这个转换器

    这里有一个很好的链接,用于在Mule中创建自定义变压器

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