Я новичок в Java EE и борюсь с медлительностью процесса развертывания и задаюсь вопросом, делаю ли я что-то не так. У меня есть опыт работы с Django, где изменения в коде происходят немедленно, и кажется, что горячее развертывание приложений Java EE немного сбивает с толку — есть несколько вещей, которые претендуют на горячее развертывание (Glassfish, маниакальное горячее развертывание Eclipse, горячее развертывание Jetty, 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