面对错误Object" java.lang.String"在mule esb中没有正确的类型

时间:2015-01-13 06:59:38

标签: mule mule-studio mule-component

我正在尝试在本地驱动器上下载ftp文件。我面临错误

Message               : Object "java.lang.String" not of correct type. It must be of type "{interface java.lang.Iterable,interface java.util.Iterator,interface org.mule.routing.MessageSequence,interface java.util.Collection}" (java.lang.IllegalArgumentException)
Code                  : MULE_ERROR--2

我使用批处理。以下是我的流程。

批处理输入流http(单向)然后在处理记录阶段我使用了与我的类绑定的java组件。我写了一个函数,它将从ftp服务器下载我的文件。我的方法是返回void,没有参数

     <batch:job name="filetosalesBatch1">
            <batch:input>
                <http:inbound-endpoint exchange-pattern="one-way" host="localhost" port="8088" doc:name="HTTP" path="test"/>
<component doc:name="Java" class="com.ReadFile">
                <no-arguments-entry-point-resolver>
                    <include-entry-point method="ftpDownloadFile"/>
                </no-arguments-entry-point-resolver>
                </component>
            </batch:input>
            <batch:process-records>
                <batch:step name="Batch_Step">
                    <logger level="INFO" doc:name="Logger"/>

                </batch:step>
            </batch:process-records>
            <batch:on-complete>
                <logger level="INFO" doc:name="Logger"/>
            </batch:on-complete>
        </batch:job> 

下面是我的方法

public void ftpDownloadFile()
{
  // logic for downloading file
}

当我的骡子应用程序出现以下错误时

Message               : Object "java.lang.String" not of correct type. It must be of type "{interface java.lang.Iterable,interface java.util.Iterator,interface org.mule.routing.MessageSequence,interface java.util.Collection}" (java.lang.IllegalArgumentException)

如何解决此错误请帮帮我

由于

2 个答案:

答案 0 :(得分:1)

请尝试用此

替换您的ftpDownloadFile方法
public List<String> ftpDownloadFile() {
    return Arrays.asList("A","B","C","D","E","F","G");
}

你的流程出了什么问题?这是因为最后一个有效负载是一个String(由http发送的请求)。在您的方法中,您应该返回一个Collection,它将是batch:process-records

的有效负载

答案 1 :(得分:0)

您不应使用自定义组件下载文件。您可以使用FTP组件检索文件内容并将内容转换为List,以便批处理能够处理它。