Может ли мультимодульный проект m2eclipse / WTP получить служебные модули, развернутые в классах WEB-INF /? - PullRequest
6 голосов
/ 04 августа 2010

В настоящее время мы используем MyEclipse с его встроенной интеграцией Maven4MyEclipse и встроенной поддержкой J2EE-сервера, но хотим перейти на обычное затмение (в частности, Helios), чтобы иметь возможность использовать его 64-битную установку в Windows.(MyEclipse пока не поддерживает 64-битную версию в Windows.)

Пока у меня есть рабочий прототип Helios eclipse, использующий m2eclipse с плагином WTP, который развертывает наше большое веб-приложение на tomcat.Развертывание требует немного ресурсов процессора, но оно работает, и приложение запускается.

Что здесь принципиально отличается, так это то, как развертываются зависимые проекты.В нашей среде MyEclipse все зависимые проекты были развернуты в разобранном виде в папке WEB-INF / classes, и поэтому во время работы сервера изменение java-класса в IDE скопировало бы только затронутые файлы вWEB-INF / classes сервера и возможность горячей замены класса в JVM и ... boom - оперативное изменение на сервере.БОЛЬШОЙ для отладки.

Однако при моем преобразовании helios все зависимые проекты получают JAR-файлы и помещают в WEB-INF / lib.Это имеет то преимущество, что на самом деле выглядит так, как выглядит наше настоящее производственное изображение, созданное компанией Maven, но среда разработки находится в невыгодном положении из-за того, что возможность горячей замены, похоже, полностью потеряна.Здесь, если я изменю класс java в зависимом проекте, m2eclipse перепакует JAR, увидит, что развернутое веб-приложение не синхронизировано, и повторно опубликует все приложение.Это не только проблема в том, что все веб-приложение должно циклически повторяться (что, честно говоря, не очень хорошо, учитывая его размер и огромное время инициализации), это также неприятная задержка затмения при повторной публикации.(Для нашего приложения это занимает около минуты или двух.)

Итак, мой вопрос заключается в следующем: есть ли способ получить изменения в зависимых проектах для горячей замены на работающую JVM и замены развернутых файлов без этой неприятнойпереиздать штраф?Я предполагаю, что это означает развертывание этих файлов классов в классах WEB-INF /, но я не знаю наверняка, что это (а) возможно или (б) действительно необходимо как часть этого решения.

Что такоедругие делают, чтобы решить это?Это разрешимо?

Заранее спасибо!

1 Ответ

5 голосов
/ 04 августа 2010

Я думаю, что вы ищете решение, описанное в Re: WTP Tomcat для горячего развертывания с m2eclipse :

Если вы включите опцию «Обслуживать модули без публикации»,затем на сервер Tomcat добавляется специальный файл jar, который позволяет поддержке Tomcat в WTP контролировать путь к классам веб-приложения.Кроме того, коммунальные проекты не собраны в банки.Вместо этого выходные папки Java проектов утилит включаются в «путь к классам» веб-приложения, эффективно обслуживая файлы классов напрямую.Если вы отключите автоматическую загрузку для контекста и запустите его в режиме отладки, изменения, которые вы вносите в классы, могут быть заменены «горячим» кодом, чтобы контекст не перезагружался.Я верю, что это сделает то, что вы ищете.

Для этого:

  • Перейдите на Сервер Просмотр
  • Дважды щелкните на сервере Tomcat, чтобы открыть настройки сервера
  • В Параметры сервера , выберите Обслуживать модули без публикации , параметр
  • В Публикация , выберите параметр Никогда не публиковать автоматически
...