FTPClient не сериализуется в Apache Wicket

Я использую Apache Wicket с Apache Commons Net. Но когда я определяю

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

Что я могу сделать?


person David Sonnenfeld    schedule 11.12.2012    source источник
comment
Проверьте этот вопрос: stackoverflow.com/questions/ 7787615/   -  person jordeu    schedule 12.12.2012


Ответы (2)


Я не думаю, что хранение экземпляра FTPClient по нескольким запросам — хорошая идея для начала. Вы должны создать свой FTPClient, использовать его, а затем сразу же отказаться от него. Это означало бы, что вы можете хранить его в локальных переменных и не беспокоиться о том, что он не сериализуем. (Что, кстати, имеет смысл, так как имеет сложное состояние, включая активные TCP-соединения.)

person biziclop    schedule 12.12.2012

Спасибо вам за ваши предложения!

Я также решил это с двумя возможностями:

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.

person David Sonnenfeld    schedule 12.12.2012