我正在使用WSO2测试一些示例用例,其中ESB必须扫描SFTP文件夹并执行某些操作。这是我做的:
1)我在axis2.xml中启用了VFS传输侦听器:
<transportReceiver name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportListener"/>
<transportSender name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportSender"/>
2)我插入了以下代理(我已经更改了用户:pass,原因很明显):
<proxy xmlns="http://ws.apache.org/ns/synapse" name="SFTPVFSProxy" transports="vfs" statistics="disable" trace="enable" startOnLoad="true">
<target>
<inSequence>
<log level="full" />
</inSequence>
</target>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.PollInterval">3</parameter>
<parameter name="transport.vfs.MoveAfterProcess">vfs:sftp://user:pass@10.254.241.69:22/home/user/sftp/out</parameter>
<parameter name="transport.vfs.FileURI">vfs:sftp://user:pass@10.254.241.69:22/home/user/sftp/in</parameter>
<parameter name="transport.vfs.MoveAfterFailure">vfs:sftp://user:pass@10.254.241.69:22/home/user/sftp/out</parameter>
<parameter name="transport.vfs.FileNamePattern">.*.txt</parameter>
<parameter name="transport.vfs.ContentType">text/plain</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
</proxy>
在两个版本4.5.0&amp; 4.5.1没有触发任何内容。除了成功部署代理的某些信息之外,日志文件中没有输出。 完全相同的脚本适用于版本3.0.1。
此外,如果我将“sftp”更改为“ftp”或本地文件,则会在v4.X中正常触发侦听器,这使我相信它可能是sftp处理特有的。
我做错了什么或软件中有错误?
提前谢谢你,
Thodoris
答案 0 :(得分:1)
我认为问题在于您定义transport.vfs.FileURI属性的方式。假设您的用户的用户名是“user”,那么当您登录到sftp时,您将转到/ home / user文件夹。因此,请尝试按如下方式定义上述属性。
<parameter name="transport.vfs.FileURI">vfs:sftp://user:pass@10.254.241.69:22/sftp/in</parameter>
或
<parameter name="transport.vfs.FileURI">vfs:sftp://user:pass@10.254.241.69:22/in</parameter>
我不能说确切的配置,因为我不知道你的文件夹结构。 我在使用SFTP的WSO2 ESB 4.0.3中尝试过这个。我的用户名是amilaftp。所以我将属性定义如下。
<parameter name="transport.vfs.FileURI">vfs:sftp://amilaftp:password@localhost/in?vfs.passive=true</parameter>
尝试使用FTP时,您需要像在提供的配置中一样提供完整路径。这就是为什么它在WSO2 ESB 4.X中使用FTP工作的原因。如果这在4.0.3中适用于您,这也应该在4.5.x中工作。我建议你先尝试4.0.3,因为它对我有用。