|
对于最新稳定版本,请使用 Spring Integration 7.0.0! |
SFTP 会话工厂
| 自3.0版本起,会话默认不再缓存。参见SFTP会话缓存。 |
在配置SFTP适配器之前,您必须先配置SFTP会话工厂。 你可以用常规的 bean 定义配置 SFTP 会话工厂,如下示例所示:
<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 Integration也支持SFTP会话的缓存。 更多信息请参见SFTP会话缓存。
这DefaultSftpSessionFactory可以使用外部配置或扩展Ssh客户端.
例如,org.eclipse.jgit.internal.transport.sshd.JGitSshClient从org.eclipse.jgit:org.eclipse.jgit.ssh.apache库可用于支持 HTTP/SOCKS 代理。 |
|
这 使用此功能时,必须将会话工厂包裹在缓存会话工厂中,如后文所述,以确保作完成时连接不会物理关闭。 如果缓存被重置,只有当最后一个通道关闭时会话才会断开连接。 如果当新作获得会话时,连接将被断开,则该连接会被刷新。 |
现在你只需要把这个SFTP会话工厂注入到你的适配器里。
| 为SFTP会话工厂提供值的更实用方法是使用Spring的属性占位符支持。 |
从6.1.3版本开始,DefaultSftpSessionFactory引入了createSftpClient(...)以支持一个习俗Sftp客户端.
请看下面覆盖的方法示例createSftpChannelSubsystem()你自定义的方法Sftp客户端举例来说,一些自定义请求处理员用于SFTP子系统的请求和回复:
@Override
protected ChannelSubsystem createSftpChannelSubsystem(ClientSession clientSession) {
ChannelSubsystem sftpChannelSubsystem = super.createSftpChannelSubsystem(clientSession);
sftpChannelSubsystem.addRequestHandler((channel, request, wantReply, buffer) -> ...);
return sftpChannelSubsystem;
}
配置属性
以下列表描述了所有由DefaultSftpSessionFactory.
isSharedSession(构造论元)::当true,一首单曲Sftp客户端用于所有请求的SftpSession实例。
它默认为false.
sftpVersionSelector::一SftpVersionSelector用于选择SFTP协议的实例。
默认的是SftpVersionSelector.CURRENT.
主机::连接主机的URL。
必填。
hostConfig::一org.apache.sshd.client.config.hosts.HostConfigEntry实例作为用户/主机/端口选项的替代方案。
可以用代理跳跃属性配置。
端口::SFTP连接将建立的端口。
如果未指定,该值默认为22.
如果指定,这些性质必须为正数。
用户::远程用户。
必填。
已知Hosts资源::一org.springframework.core.io.Resource那个被用作主机密钥仓库的设备。
资源内容必须与OpenSSH格式相同known_hosts文件和是必需的,并且必须预先填充,如果允许未知钥匙是错误的。
密码::用于对远程主机进行认证的密码。
如果未提供密码,则私钥必须有财产。
私钥::一org.springframework.core.io.Resource该私钥代表用于对远程主机进行认证的私钥位置。
如果私钥如果没有提供,则密码必须有财产。
私人密钥密码短语::私钥的密码。
如果你设置了用户信息,私人密钥密码短语不允许。
密码短语是从该对象获得的。
自选。
超时::超时属性被用作套接字超时参数,同时也是默认连接超时。
默认30秒.
设定为0表示无暂停;自零- 无限等待。
允许未知钥匙::设定为true允许连接拥有未知(或更改)密钥的主机。
默认为“false”。
如果false,一个预填充的已知主机需要提交文件。
用户交互::一种习俗org.apache.sshd.client.auth.keyboard.UserInteraction用于认证。