我正在尝试在本地驱动器上下载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)
如何解决此错误请帮帮我
由于
答案 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,以便批处理能够处理它。