此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Integration 6.4.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>
每次适配器从其 请求会话对象时,都会创建一个新的 SFTP 会话。
实际上,SFTP Session Factory 依赖于 Apache MINA SSHD 库来提供 SFTP 功能。SessionFactory
但是, Spring 集成还支持 SFTP 会话的缓存。 有关更多信息,请参阅 SFTP 会话缓存。
可以使用外部配置或扩展的 .
例如,库中的扩展可用于提供对 HTTP/SOCKS 代理的支持。DefaultSftpSessionFactory SshClient org.eclipse.jgit.internal.transport.sshd.JGitSshClient org.eclipse.jgit:org.eclipse.jgit.ssh.apache |
支持通过与服务器的连接使用多个通道(操作)。
默认情况下, Spring 集成会话工厂为每个通道使用单独的物理连接。
从 Spring Integration 3.0 开始,您可以配置会话工厂(使用布尔构造函数 arg - default )以使用与服务器的单个连接,并在该单个连接上创建多个实例。 使用此功能时,必须将 session factory 包装在缓存 session factory 中,如下所述,以便在操作完成时不会物理关闭连接。 如果重置缓存,则仅当最后一个通道关闭时,会话才会断开连接。 如果在新操作获取会话时断开连接,则会刷新连接。 |
现在您需要做的就是将此 SFTP 会话工厂注入到您的适配器中。
为 SFTP 会话工厂提供值的更实用的方法是使用 Spring 的属性占位符支持。 |
从版本 6.1.3 开始,引入了 a 以支持自定义 .
请参阅下面的示例,了解如何覆盖自定义中的方法,以添加一些自定义,例如 SFTP 子系统请求和回复:DefaultSftpSessionFactory
createSftpClient(…)
SftpClient
createSftpChannelSubsystem()
SftpClient
RequestHandler
@Override
protected ChannelSubsystem createSftpChannelSubsystem(ClientSession clientSession) {
ChannelSubsystem sftpChannelSubsystem = super.createSftpChannelSubsystem(clientSession);
sftpChannelSubsystem.addRequestHandler((channel, request, wantReply, buffer) -> ...);
return sftpChannelSubsystem;
}
配置属性
以下列表描述了 DefaultSftpSessionFactory
公开的所有属性。
isSharedSession
(constructor argument)::当 ,则 single 用于所有请求的实例。
它默认为 .true
SftpClient
SftpSession
false
sftpVersionSelector
::用于 SFTP 协议选择的实例。
默认值为 .SftpVersionSelector
SftpVersionSelector.CURRENT
host
::要连接到的主机的 URL。
必填。
hostConfig
::作为 user/host/port 选项的替代实例。
可以使用代理跳转属性进行配置。org.apache.sshd.client.config.hosts.HostConfigEntry
port
::应通过其建立 SFTP 连接的端口。
如果未指定,则此值默认为 。
如果指定,则此属性必须为正数。22
user
::要使用的远程用户。
必填。
knownHostsResource
::用于主机密钥存储库的 An。
资源的内容必须与 OpenSSH 文件的格式相同,并且是必需的,如果为 false,则必须预先填充。org.springframework.core.io.Resource
known_hosts
allowUnknownKeys
password
::用于对远程主机进行身份验证的密码。
如果未提供密码,则该属性是必需的。privateKey
privateKey
::表示用于对远程主机进行身份验证的私钥的位置。
如果未提供 the,则 property 是必需的。org.springframework.core.io.Resource
privateKey
password
privateKeyPassphrase
::私钥的密码。
如果设置 ,则不允许 。
密码是从该对象获取的。
自选。userInfo
privateKeyPassphrase
timeout
::timeout 属性用作套接字超时参数,以及默认连接超时。
默认为 。
设置为 表示无超时;to - 无限等待。30 seconds
0
null
allowUnknownKeys
::设置为 以允许连接到具有未知(或更改)键的主机。
它的默认值是 'false'。
如果 ,则需要预填充的文件。true
false
knownHosts
userInteraction
::身份验证期间使用的自定义。org.apache.sshd.client.auth.keyboard.UserInteraction