我正在使用SSH Maverich库进行SFTP调用,并使用apache公共池封装了特异对象和池连接对象。如何关闭使用Apache Commons Pool的SSH Maverick连接对象
我实现了commons pool Factory方法来创建对象。
如何关闭传输层连接,而空闲对象有资格驱逐?
P.S.destroyObject在Factory中不起作用。 Apache公共泳池版本:1.6
我正在使用SSH Maverich库进行SFTP调用,并使用apache公共池封装了特异对象和池连接对象。如何关闭使用Apache Commons Pool的SSH Maverick连接对象
我实现了commons pool Factory方法来创建对象。
如何关闭传输层连接,而空闲对象有资格驱逐?
P.S.destroyObject在Factory中不起作用。 Apache公共泳池版本:1.6
必须调用SshClient.disconnect和SftpClient.quit来关闭传输通道。
以下几点已解决我的问题。
1.使用apache commons pool的mavericks时最重要的是调用适当的生命周期方法。
2.将SshClient和SftpClient封装到池下的对象中。 SshClient和SftpClient必须是池下的对象的实例成员。因此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():
}
}
J2SSH Maverick的版本是否在使用?
但是,在所有情况下,在SshClient上调用断开连接都是至关重要的。或者取决于版本,您可以配置空闲超时。