0

Apache Commons Net で Apache Wicket を使用しています。しかし、私が定義するとき

new FTPClient(); //apache commons net library

例外が発生します

org.apache.commons.net.ftp.FTPClient at.erpel.as2connector.testtool.protocols.FTP.client
[class=org.apache.commons.net.ftp.FTPClient] <----- field that is not serializable

私に何ができる?

4

2 に答える 2

3

FTPClient複数のリクエストにわたってインスタンスを保存することは、最初から良い考えではないと思います。を作成してFTPClient使用し、すぐに破棄する必要があります。つまり、ローカル変数に保存でき、シリアル化できないことを心配する必要はありません。(ちなみに、アクティブな TCP 接続を含む複雑な状態があるため、これは理にかなっています。)

于 2012-12-12T10:34:21.177 に答える
0

ご提案ありがとうございます。

また、2つの可能性で解決しました:

1)フィールドを一時的にすることができます:

transient FTPClient() client;

2) FTPClient が使用される親クラスのシングルトンを作成します。

public class AnyClass implements Serializable {

    private static AnyClass instance;

    private AnyClass() {

    }

    public static AnyClass getInstance() {
        if (instance == null) {
            instance = new AnyClass();
        }
        return instance;
    }

    FTPClient client = new FTPClient();
    ...
}

3) biziclop の提案に従って: FTP 通信専用の独自のクラスを作成します。

于 2012-12-12T13:54:38.017 に答える