2016-03-03 67 views
0

我正在使用SSH Maverich库进行SFTP调用,并使用apache公共池封装了特异对象和池连接对象。如何关闭使用Apache Commons Pool的SSH Maverick连接对象

我实现了commons pool Factory方法来创建对象。

如何关闭传输层连接,而空闲对象有资格驱逐?

P.S.destroyObject在Factory中不起作用。 Apache公共泳池版本:1.6

回答

0

必须调用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(): 

} 

} 
1

J2SSH Maverick的版本是否在使用?

但是,在所有情况下,在SshClient上调用断开连接都是至关重要的。或者取决于版本,您可以配置空闲超时。

相关问题