Apache Commons NET: Должен ли я создавать новый объект FTPClient для каждого соединения или использовать его повторно? - PullRequest
8 голосов
/ 01 августа 2011

Мне просто интересно: в моем приложении Java каждый раз, когда мне нужно подключиться к FTP-серверу, должен ли я создавать новый объект FTPClient или мне следует создавать один объект FTPClient () и повторно использовать его каждый раз, когда яподключиться к FTP-серверу?

Ответы [ 3 ]

13 голосов
/ 01 августа 2011

Оба будут работать, но библиотеки apache commons.net не безопасны для потоков , поэтому, если вы используете один клиент с несколькими потоками, помните, что вам придется синхронизировать доступ к нему.

4 голосов
/ 01 августа 2011

Не зная точно, что должен делать ваш код (как часто он соединяется, сколько файлов ему нужно передать и т. Д.), Трудно сказать.

Мое личное мнение будет одним FTPClient(), но подключайтесь / проверяйте подлинность / передавайте / отключайте каждый раз, когда вам нужно что-то сделать (при условии, что между ними будет разумный разрыв). Причина заключается в том, что FTP-сессии часто имеют довольно короткие тайм-ауты бездействия.

3 голосов
/ 01 августа 2011

Повторное использование было бы лучше, так как вам не понадобится новый экземпляр каждый раз, когда вы создаете новое соединение, даже с новым сервером.Потому что методы подключения и отключения могут сделать эту работу за вас.

Так что используйте как можно больше объектов.

...