Интеграция JRebel с пользовательским веб-приложением Ant/Ivy/Tomcat с помощью Spring MVC

Я пытаюсь заставить JRebel работать с довольно большим корпоративным веб-приложением, которое использует Ant + Ivy для управления построением/зависимостью, инфраструктуру Spring 2.0 и Spring MVC, и все это нужно построить и развернуть на Tomcat.

У меня включен JRebel на Tomcat и в самом проекте. Удаленное взаимодействие не включено, так как я предполагаю, что если Tomcat и проект находятся на одной машине, в этом нет необходимости. Когда я запускаю сервер Tomcat из STS, кажется, что JRebel загружается нормально, и я не вижу (очевидных) существенных ошибок.

Однако любые изменения в проекте никак не влияют на развертывание, и я не вижу сообщений JRebel в консоли. Сам проект имеет несколько нестандартную компоновку и не имеет традиционной структуры WEB-INF/src. Когда я включил на нем JRebel в STS, он просто выгрузил файл rein.xml в корневой каталог.

Для справки: проект основан на этой кодовой базе и имеет ту же общую структуру: https://github.com/NCIP/c3pr/tree/master/codebase

Хотя руководства по JRebel хороши, они показывают использование JRebel только в очень простых проектах и ​​не вникают в подробности того, как именно работает сервис.

Любые предложения, ресурсы или идеи приветствуются.

Спасибо


person haystack    schedule 10.01.2014    source источник


Ответы (1)


Вы действительно перекомпилировали (не имеет значения, используете ли вы Eclipse или javac) те классы, которые вы изменили? Возможно, было бы неплохо проверить, включена ли функция «Автоматическая сборка» в меню «Проект».

То, как работает JRebel, заключается в том, что он фактически отслеживает выходную папку компилятора (обычно это папка «bin» или «build/classes» или что-то подобное). Эта папка (или папки) указана в файле rein.xml, и файл должен находиться в пути к классам вашего приложения во время его запуска (WEB-INF/classes или в корне файла jar или в развернутом каталоге).

Можете ли вы удостовериться, что файл vanilla.xml действительно находится в пути к классам приложений? Кроме того, вы должны увидеть сообщение в консоли, которое говорит что-то вроде: «JRebel: каталог '/path/to/project/bin' будет отслеживаться на наличие изменений».

А также, если вы видите баннер JRebel в своей консоли, полезно проверить, найдена ли лицензия (если не найдена, то JRebel работать не будет).

Иногда также может быть некоторое несоответствие, когда ваш Eclipse компилирует классы в папку «bin», а ваши скрипты сборки компилируют их в папку «build/classes», и только одно из этих мест указано в файле rein.xml. В этом случае JRebel будет отслеживать только один из них, и тогда это тоже сбивает с толку.

С наилучшими пожеланиями, Зигмар

person six    schedule 10.01.2014
comment
Спасибо, все еще работаю над этим. Баннер JRebel находится в консоли, и лицензия активна. Похоже, мне нужно вручную настроить местоположения, которые ищет JRebel. - person haystack; 13.01.2014
comment
Да, и файл сборки ant генерирует все в проекты\web\web, эта папка состоит из стандартных папок и файлов веб-приложения (например, css, js, index.jsp, lib) и почти всей основной логики. веб-приложения находится в файлах jar внутри этой папки lib. Но сам Eclipse не компилирует проект. То, как он настроен, всегда нуждается в Ant для компиляции почти всего. Я думаю, мне нужно больше узнать об основных процессах, лежащих в основе мониторинга JRebel. - person haystack; 13.01.2014