У меня есть серверное приложение Java, которое использует множество библиотек (netty, guava и т. д.). Я всегда экспортирую это приложение как один .jar. Когда я запускал приложение в Eclipse, у меня не возникло никаких проблем. Но если я запускаю приложение в консоли (Windows или Ubuntu не имеет значения), у меня возникает странная проблема: ВСЕ процессы подключения через сокеты длятся слишком долго. Например, простое http-соединение через HttpAsync или другие (соединение RabbitMQ и т.п.) длится 1-2 мин. Но после завершения соединения данные отправляются/получаются быстро. Я не могу понять, в чем проблема. Как упоминалось ранее, я использую Eclipse для разработки.
Как вы знаете, вы можете экспортировать проект тремя различными способами (в Eclipse):
- Извлечь необходимые библиотеки в JAR.
- Упаковать необходимые библиотеки в JAR.
- Скопировать необходимые библиотеки в подпапку рядом с JAR.
Итак, когда я использовал 2 вариант, у меня была проблема. Когда я переключился на вариант 3d (все .jars в папке рядом с основным .jar), проблема была решена.
Как правило, нет большой разницы между 2 и 3 вариантами (в 2 все .jars только внутри одной банки). Я думал, что это связано с дополнительным временем, необходимым для загрузки новых классов во время выполнения из jar-файлов. Но проблема возникает не только при запуске, но и при всех новых подключениях.
Может кто-нибудь объяснить такое поведение?
UPD: Eclipse Luna. Неважно, какую ОС я использую (Windows или Ubuntu), даже не имеет значения, какой jvm (пробовал с другим Oracle jdk, даже пробовал открыть jdk).
Подробнее здесь:
https://stackoverflow.com/questions/324 ... ort-option