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