我正在使用SSH Maverich库进行SFTP调用,并使用apache公用池封装了特立独行的对象和池连接对象。
我实现了方法来创建对象。
如何在空闲对象符合驱逐条件时关闭传输层连接?
工厂中的P.S.destroyObject不起作用。Apache共用池版本: 1.6
发布于 2016-03-07 03:46:53
必须调用SshClient.disconnect和SftpClient.quit来关闭传输通道。
以下几点解决了我的问题。
1.在使用apache共用池时,最重要的是调用适当的生命周期方法。
2.将SshClient和SftpClient封装成池下的对象。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():
}
}发布于 2016-03-04 10:24:52
您使用的是什么版本的J2SSH Maverick?
然而,在所有情况下,在SshClient上调用断开连接都是必不可少的。或者根据版本的不同,您可以配置空闲超时。
https://stackoverflow.com/questions/35778487
复制相似问题