我在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路径。我认为这是由于技术错误造成的。
但是当我用正确的文件测试我的序列时,一切都顺利。
对此有何想法?谢谢你的帮助
答案 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,并且已经定义了rsaFolderProcess
和rsaFolderErrors
)
这会导致以下错误:
[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
书写;唯一的问题是调解顺序不知道该调解顺序,并且无法将文件从前者移到后者。好像在传输层中声明的权限没有被调解继承。如何解决此问题并实现此目标?
环境