WSO2 - VFS在发生故障时没有将文件移动到正确的路径

时间:2016-10-12 09:53:47

标签: wso2 wso2esb vfs

我在WSO2 VFS系统上面临一个小问题。我有一个简单的入站端点,每隔5秒扫描一个文件夹以读取一个CVS文件。 我想处理文件名不是预期文件名的情况。 我通过错误序列管理了但仍然遇到了技术错误:

ERROR - FilePollingConsumer Error moving file : file:///C:/Servers/Flux/Input/UESMGEN_2AAB_20160729.csv to file:///C:/Servers/Flux/Output/Process/ org.apache.commons.vfs2.FileSystemException: Could not rename "

我使用了transport.vfs.MoveAfterFailure,但文件被移动到transport.vfs.MoveAfterProcess路径。我认为这是由于技术错误造成的。

但是当我用正确的文件测试我的序列时,一切都顺利。

对此有何想法?谢谢你的帮助

2 个答案:

答案 0 :(得分:4)

transport.vfs.MoveAfterFailure在中介之前使用,当传输层/在axis2流中发生错误时(例如,在构建缺少某些结束标记的application / xml消息时)。

一旦消息进入中介,即使执行了故障序列,也将使用transport.vfs.MoveAfterProcess

(这是它与ESB 4.8.1一起使用的方式,不能说这与ESB 5仍然相同)

答案 1 :(得分:0)

感谢这种精确的让·米歇尔(Jean-Michel)。抱歉,我再次打开该问题,但是我觉得我找不到多少机会像您提供的那样清楚。

如果发生某些问题,中介是否可以将文件从transport.vfs.MoveAfterProcess(由传输层移动到的位置)移动到另一个文件夹?这是错误序列的相关部分,我尝试在其中移动文件

  • 来自sftp://foo:***@localhost:2222/Process
  • sftp://foo:***@localhost:2222/Errors
<fileconnector.move>
    <source>{fn:concat($ctx:rsaFolderProcess ,$trp:FILE_NAME)}</source>
    <destination>{fn:concat($ctx:rsaFolderErrors,$trp:FILE_NAME)}</destination>
</fileconnector.move>

(我正在使用文件连接器2.0.20,并且已经定义了rsaFolderProcessrsaFolderErrors

这会导致以下错误:

[2020-03-26 14:51:21,743] [] ERROR - FileMove Unable to move a file/folder.
org.apache.commons.vfs2.FileSystemException: Could not determine if file "sftp://foo:***@localhost:2222/Process" is writeable.
        at org.apache.commons.vfs2.provider.AbstractFileObject.isWriteable(AbstractFileObject.java:1529)
        at org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1573)
        at org.wso2.carbon.connector.FileMove.fileMove(FileMove.java:143)
        at org.wso2.carbon.connector.FileMove.moveFile(FileMove.java:103)
        at org.wso2.carbon.connector.FileMove.connect(FileMove.java:60)
.....

我检查了权利。用户foo可以用Success/Errors书写;唯一的问题是调解顺序不知道该调解顺序,并且无法将文件从前者移到后者。好像在传输层中声明的权限没有被调解继承。如何解决此问题并实现此目标?

环境

  • wso2ei 6.5.0