0

私は SFTP 呼び出しを行うために SSH Maverich ライブラリを使用しており、apache commons プールを使用して maverick オブジェクトとプールされた接続オブジェクトをカプセル化しています。

Commons プールの Factory メソッドを実装して、オブジェクトを作成しました。

アイドル状態のオブジェクトがエビクションの対象である間にトランスポート層接続を閉じるにはどうすればよいですか?

Factory の PSdestroyObject が機能していません。Apache コモンズ プールのバージョン: 1.6

4

2 に答える 2

0

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():

}

}
于 2016-03-07T03:46:53.520 に答える