SshClient.disconnect と SftpClient.quit を呼び出して、トランスポート チャネルを閉じる必要があります。
以下の点は私の問題を解決しました。
1. Apache Commons プールでマーベリックスを使用する際に最も重要なことは、適切なライフサイクル メソッドを呼び出すことです。
2. SshClient と SftpClient をプール下の Object にカプセル化します。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():
}
}