WSO2 MI 4.0.0 FTP入站端点文件读取错误求助
问题分析与解决方案
错误根源
从堆栈跟踪可以看到,核心错误是java.net.SocketException: Connection reset,发生在FTP客户端尝试建立数据连接(用于列出目录或读取文件)的阶段。这通常是由于FTP连接模式不匹配、防火墙拦截或路径配置问题导致的。
解决方案步骤
启用FTP被动模式:大多数现代FTP服务器默认要求使用被动模式(Passive Mode),而WSO2 MI的VFS传输默认可能使用主动模式。添加以下参数强制使用被动模式:
<parameter name="transport.vfs.FTPPassiveMode">true</parameter>验证FTP路径格式:确保
transport.vfs.FileURI的路径格式正确:- 如果FTP端口不是默认的21,需在IP后指定端口,例如:
ftp://user:pass@ip:port/path - 路径末尾不需要添加额外斜杠,确保指向的是一个存在且有读取权限的目录
- 如果FTP端口不是默认的21,需在IP后指定端口,例如:
检查防火墙与网络权限:
- 确保WSO2 MI服务器能访问FTP服务器的21端口(控制连接)
- 如果使用被动模式,FTP服务器配置的被动端口范围需对MI服务器开放
修正后的入站端点配置
<?xml version="1.0" encoding="UTF-8"?> <inboundEndpoint name="file-inbound-endpoint" onError="file-inbound-endpoint-fault-sequence" protocol="file" sequence="file-inbound-endpoint-in-sequence" suspend="false" xmlns="http://ws.apache.org/ns/synapse"> <parameters> <parameter name="interval">10000</parameter> <parameter name="sequential">true</parameter> <parameter name="coordination">true</parameter> <parameter name="transport.vfs.ActionAfterProcess">NONE</parameter> <parameter name="transport.vfs.FileURI">ftp://{username}:{password}@{ip_address}/{location-path}</parameter> <parameter name="transport.vfs.FileNamePattern">.*\.swf</parameter> <parameter name="transport.vfs.ContentType">text/plain</parameter> <!-- 启用FTP被动模式 --> <parameter name="transport.vfs.FTPPassiveMode">true</parameter> <!-- 可选:指定FTP控制连接的字符编码 --> <parameter name="transport.vfs.FTPControlEncoding">UTF-8</parameter> </parameters> </inboundEndpoint>
额外排查点
- 确认FTP服务器允许该用户读取目标目录下的文件
- 使用第三方FTP客户端(如FileZilla)用相同凭据连接,验证是否能正常列出和读取文件,排除FTP服务器端问题
内容的提问来源于stack exchange,提问作者Madhushani Hewagama
相关产品推荐
相关产品推荐

