Mule ESB Community Edition 3.4 - 防止删除原始文件

mer*_*ejy 4 ftp mule

我设法建立一个Mule项目,从FTP下载文件,并将其保存在本地磁盘上.但是,在传输文件后,Mule一直试图删除FTP上的远程文件.有没有办法告诉Mule不要删除原始文件,只是保持原样?

这是我的项目XML:

     <?xml version="1.0" encoding="UTF-8"?>
  <mule ...>

    <flow name="copy-remote-fileFlow1" doc:name="copy-remote-fileFlow1">
        <ftp:inbound-endpoint host="ftp.secureftp-test.com" port="21" path="subdir1" user="test" password="test" pollingFrequency="60000" responseTimeout="10000" doc:name="FTP">
            <file:filename-wildcard-filter pattern="box.ico" />
        </ftp:inbound-endpoint>
        <file:outbound-endpoint path="I:\test\" outputPattern="fromMule.ico" responseTimeout="10000"
 doc:name="File" />     </flow>

 </mule>
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我没有删除文件的权限,所以我得到一个例外:

ERROR 2013-05-24 17:35:47,286 [[copy-remote-file].connector.ftp.mule.default.receiver.02] org.mule.exception.DefaultSystemExceptionStrategy: Caught exception in Exception Strategy: Failed to delete file box.ico. Ftp error: 550
java.io.IOException: Failed to delete file box.ico. Ftp error: 550
    at org.mule.transport.ftp.FtpMessageReceiver.postProcess(FtpMessageReceiver.java:202)
    at com.mulesoft.mule.transport.ftp.EEFtpMessageReceiver.postProcess(EEFtpMessageReceiver.java:71)
    at org.mule.transport.ftp.FtpMessageReceiver$FtpWork.run(FtpMessageReceiver.java:316)
    at org.mule.work.WorkerContext.run(WorkerContext.java:311)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

Dav*_*sot 6

您唯一的选择是扩展org.mule.transport.ftp.FtpMessageReceiver以覆盖该postProcess方法,该方法负责删除FTP服务器上的文件.

要注册您的自定义,请FtpMessageReceiver使用service-overridesFTP连接器上的配置元素:

<ftp:connector name="nonDeletingFtpConnector">
    <service-overrides messageReceiver="com.amce.NonDeletingFtpMessageReceiver" />
</ftp:connector>
Run Code Online (Sandbox Code Playgroud)