如何关闭使用 Apache Commons Pool 的 SSH Maverick 连接对象

How to close the SSH Maverick Connection Object which uses Apache Commons Pool

我正在使用 SSH Maverich 库进行 SFTP 调用,并且我使用 apache 公共池封装了特立独行的对象和合并的连接对象。

我实现了公共池工厂方法来创建对象。

如何在空闲对象符合驱逐条件时关闭传输层连接?

工厂中的

P.S.destroyObject 不工作。 Apache 公共池版本:1.6

您使用的是哪个版本的 J2SSH Maverick?

然而,在所有情况下,在 SshClient 上调用 disconnect 是必不可少的。或者根据版本,您可以配置空闲超时。

SshClient.disconnect 和 SftpClient.quit 必须调用以关闭传输通道。

以下几点解决了我的问题。

1.The 将 mavericks 与 apache 公共池一起使用时最重要的事情是调用正确的生命周期方法。

2.Encapsulation 将SshClient 和SftpClient 转化为池下的Object。 SshClient 和 SftpClient 必须是 pool.So 下对象的实例成员,BaseKeyedObjectPoolableFactory 的 destroyObject 方法是通过对象退出和断开连接实现的。

class SFTPConnection{
private SshClient sshClient;
private SftpClient sftpClient;

------

public void destroyObject(){
sshClient.disconnect();
sftpClient.quit()
}


class SFTPConnectionFactory extends BaseKeyedObjectPoolableFactory{

----
public void destroyObject(Object Key,Object arg){

SFTPConnection sftpConnection = (SFTPConnection)arg;
sftpConnection.destroyObject():

}

}