2016-03-03 44 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上調用斷開連接都是至關重要的。或者取決於版本,您可以配置空閒超時。

相關問題