Я довольно новичок в Java EE и борюсь с медлительностью процесса развертывания, и мне интересно, делаю ли я что-то не так. У меня есть опыт работы с Django, где сразу происходят изменения в коде, и кажется, что горячее развертывание приложений Java EE немного сбивает с толку - есть несколько вещей, которые претендуют на горячее развертывание (Glassfish, Eclipse Manic Hotdeploy, Jetty hotdeploy, JRebel и т. Д. ).
Мой проект - проект Maven, и я использую Netbeans для развертывания. На сайте используются фреймворки Spring, JSF и Hibernate.
В Netbeans функция «Развернуть при сохранении», как показано на следующем снимке экрана, по-видимому, включена, но щелчок / отмена щелчка невозможны, поскольку она требует получить информацию из моего файла pom.xml (хотя в моем pom такого поля нет. XML (только зависимости)).
Теперь изменения в некоторых файлах вступают в силу немедленно. Они включают:
- файлы JSF
- Статические файлы
Изменения в следующих требуют развертывания:
- любой файл XML
- Любой файл свойств, даже файлы свойств локализации
- Любой файл Java
Для внесения изменений требуется, чтобы я развернул вручную , а повторное развертывание занимает полминуты, хотя в настоящее время у меня всего 2-3 класса, в основном один класс пользователя и класс авторизации. В данный момент проект позволяет просто войти в систему, и, несмотря на это, компиляция занимает около нескольких секунд; и контейнер (Glassfish), кажется, потребляет около 600 МБ ОЗУ и даже выдает ошибки PermGen после нескольких развертываний, и мне нужно убить процесс Java с помощью диспетчера задач. (Я читал, что это связано с утечкой сборщика мусора после каждого повторного развертывания, и я даже использовал jhat для создания профиля, но мне был представлен список из тысяч классов, моих классов, классов Spring, Hibernate и т. Д.)
Я также слышал о jrebel и пытался запустить его, но кажется, что он не совместим с моей версией Netbeans (7.0), и, хотя кажется, что он работает, любая модификация любого файла java все еще требует повторного развертывания.
Могу ли я что-нибудь сделать для исправления этих проблем, или в Java EE нормально ждать около 1 минуты после каждого изменения любого файла Java? Эта проблема значительно убивает производительность.
Вот мой вывод Glassfish при развертывании приложения: http://pastebin.com/7FhZ6AVh