Я хотел спросить, знает ли кто-нибудь о проблемах с Java 7 с FTP? Я использовал как библиотеки Sun Net, так и Apache Commons Net, и оба выполняются так, как ожидалось, на Java 6. Но когда я переключаю свою среду разработки (Eclipse) на 1.7, те же операции выполняются очень медленно (от 4,5 до 8 КБ/с) и это для локальных серверов и другого сервера в локальной сети.
Я пробовал буферизованные потоки, передачу по байт-байту, выключение алгоритма Нагле и использование удобного метода хранения Apache storeFile(), при этом последний, наконец, выполнял скорость на локальном хосте, но снова замедлял сканирование на удаленный сервер. Я также установил все машины, чтобы отключить фильтрацию FTP с проверкой состояния.
InputStream is = null;
OutputStream os = null;
try {
is = new BufferedInputStream(prepareInputStream(data));
os = new BufferedOutputStream(prepareOutputStream(data));
if (is == null || os == null) {
log.error("Can't build connection");
return;
}
byte[] buf = new byte[4096];
int c = 1;
while (c > 0) {
c = is.read(buf);
if (c > 0)
os.write(buf, 0, c);
data.incrCurrentPosition();
fireStateChanged(data);
}
data.incrCurrentPosition();
} catch (IOException e) {
log.error(e.getMessage(), e);
setEnabled(false);
} catch (Exception e) {
log.error(e.getMessage(), e);
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Как видно, это довольно стандартный код реализации. Опять же, в Java 6, вещи быстро застегиваются. В Java 7 он замедляется в 10-20 раз для библиотек Sun и Apache Commons. Использование FTP-клиента, такого как FileZilla, подтверждает, что FTP работает нормально, поэтому я думаю, что он действительно имеет отношение к Java 7. Я вырыл, насколько мог онлайн, для упоминания проблемы, но, в основном, то, что я видел, было конфликт между брандмауэром Java 7 и Windows 7.
Заранее благодарим за предоставленную информацию.