对于最新稳定版本,请使用 Spring Integration 7.0.0spring-doc.cadn.net.cn

SFTP 会话工厂

自3.0版本起,会话默认不再缓存。参见SFTP会话缓存

在配置SFTP适配器之前,您必须先配置SFTP会话工厂。 你可以用常规的 bean 定义配置 SFTP 会话工厂,如下示例所示:spring-doc.cadn.net.cn

<beans:bean id="sftpSessionFactory"
    class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
    <beans:property name="host" value="localhost"/>
    <beans:property name="privateKey" value="classpath:META-INF/keys/sftpTest"/>
    <beans:property name="privateKeyPassphrase" value="springIntegration"/>
    <beans:property name="port" value="22"/>
    <beans:property name="user" value="kermit"/>
</beans:bean>

每次适配器从其请求会话对象时SessionFactory创建一个新的SFTP会话。 在表面之下,SFTP 会话工厂依赖于 Apache MINA SSHD 库来提供 SFTP 功能。spring-doc.cadn.net.cn

然而,Spring Integration也支持SFTP会话的缓存。 更多信息请参见SFTP会话缓存spring-doc.cadn.net.cn

DefaultSftpSessionFactory可以使用外部配置或扩展Ssh客户端. 例如,org.eclipse.jgit.internal.transport.sshd.JGitSshClientorg.eclipse.jgit:org.eclipse.jgit.ssh.apache库可用于支持 HTTP/SOCKS 代理。

Ssh客户端支持通过与服务器连接实现多通道(作)。 默认情况下,Spring Integration 会话工厂为每个通道使用独立的物理连接。 自从 Spring Integration 3.0 起,你可以配置会话工厂(使用布尔构造函数 arg,默认设置false)使用单一连接服务器并创建多个连接Sftp客户端该连接上的实例。spring-doc.cadn.net.cn

使用此功能时,必须将会话工厂包裹在缓存会话工厂中,如后文所述,以确保作完成时连接不会物理关闭。spring-doc.cadn.net.cn

如果缓存被重置,只有当最后一个通道关闭时会话才会断开连接。spring-doc.cadn.net.cn

如果当新作获得会话时,连接将被断开,则该连接会被刷新。spring-doc.cadn.net.cn

现在你只需要把这个SFTP会话工厂注入到你的适配器里。spring-doc.cadn.net.cn

为SFTP会话工厂提供值的更实用方法是使用Spring的属性占位符支持

从6.1.3版本开始,DefaultSftpSessionFactory引入了createSftpClient(...)以支持一个习俗Sftp客户端. 请看下面覆盖的方法示例createSftpChannelSubsystem()你自定义的方法Sftp客户端举例来说,一些自定义请求处理员用于SFTP子系统的请求和回复:spring-doc.cadn.net.cn

@Override
protected ChannelSubsystem createSftpChannelSubsystem(ClientSession clientSession) {
    ChannelSubsystem sftpChannelSubsystem = super.createSftpChannelSubsystem(clientSession);
    sftpChannelSubsystem.addRequestHandler((channel, request, wantReply, buffer) -> ...);
    return sftpChannelSubsystem;
}

配置属性

以下列表描述了所有由DefaultSftpSessionFactory.spring-doc.cadn.net.cn

isSharedSession(构造论元)::当true,一首单曲Sftp客户端用于所有请求的SftpSession实例。 它默认为false.spring-doc.cadn.net.cn

sftpVersionSelector::一SftpVersionSelector用于选择SFTP协议的实例。 默认的是SftpVersionSelector.CURRENT.spring-doc.cadn.net.cn

主机::连接主机的URL。 必填。spring-doc.cadn.net.cn

hostConfig::一org.apache.sshd.client.config.hosts.HostConfigEntry实例作为用户/主机/端口选项的替代方案。 可以用代理跳跃属性配置。spring-doc.cadn.net.cn

端口::SFTP连接将建立的端口。 如果未指定,该值默认为22. 如果指定,这些性质必须为正数。spring-doc.cadn.net.cn

用户::远程用户。 必填。spring-doc.cadn.net.cn

已知Hosts资源::一org.springframework.core.io.Resource那个被用作主机密钥仓库的设备。 资源内容必须与OpenSSH格式相同known_hosts文件和是必需的,并且必须预先填充,如果允许未知钥匙是错误的。spring-doc.cadn.net.cn

密码::用于对远程主机进行认证的密码。 如果未提供密码,则私钥必须有财产。spring-doc.cadn.net.cn

私钥::一org.springframework.core.io.Resource该私钥代表用于对远程主机进行认证的私钥位置。 如果私钥如果没有提供,则密码必须有财产。spring-doc.cadn.net.cn

私人密钥密码短语::私钥的密码。 如果你设置了用户信息,私人密钥密码短语不允许。 密码短语是从该对象获得的。 自选。spring-doc.cadn.net.cn

超时::超时属性被用作套接字超时参数,同时也是默认连接超时。 默认30秒. 设定为0表示无暂停;自- 无限等待。spring-doc.cadn.net.cn

允许未知钥匙::设定为true允许连接拥有未知(或更改)密钥的主机。 默认为“false”。 如果false,一个预填充的已知主机需要提交文件。spring-doc.cadn.net.cn

用户交互::一种习俗org.apache.sshd.client.auth.keyboard.UserInteraction用于认证。spring-doc.cadn.net.cn