0

我正在尝试在本地驱动器上下载 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
}

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

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)

如何解决这个错误请帮助我

谢谢

4

2 回答 2

1

请尝试ftpDownloadFile用这个替换你的方法

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

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

于 2015-01-15T05:47:00.137 回答
0

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

于 2015-01-13T15:36:01.620 回答