Интеграция 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, он просто сбросил файл rebel.xml в корневой каталог.
Для справки, проект основан на этой кодовой базе и имеет ту же общую структуру: https://github.com/NCIP/c3pr/tree/master/codebase
Хотя руководства JRebel хороши, они показывают только то, что JRebel используется с очень простыми проектами, и не очень углубляются в то, как именно работает сервис.
Любые предложения, ресурсы или идеи с благодарностью.
Спасибо
1 ответ
Вы действительно перекомпилировали (не важно, используете ли вы Eclipse или javac) те классы, которые вы изменили? Возможно, было бы неплохо проверить, включена ли функция "Построить автоматически" в меню "Проект".
Способ работы JRebel заключается в том, что он фактически контролирует выходную папку компилятора (обычно это папка "bin" или "build/classes" или что-то подобное). Эта папка (или папки) указана в файле rebel.xml, и файл должен находиться в пути к классу вашего приложения во время его запуска (WEB-INF/classes или в корне файла jar или в разобранном каталоге).
Можете ли вы убедиться, что файл rebel.xml действительно находится в пути к классам приложений? Кроме того, вы должны увидеть сообщение в консоли, которое говорит что-то вроде: "JRebel: каталог '/path/to/project/bin' будет отслеживаться на предмет изменений."
А также, если вы видите баннер JRebel в вашей консоли, полезно проверить, найдена ли лицензия (если она не найдена, то JRebel не будет работать).
Иногда может также иметь место некоторое несоответствие, когда ваш Eclipse компилирует классы в папку "bin", а ваши скрипты сборки компилируют их в "build/classes", и только одно из этих мест указано в файле rebel.xml. В этом случае JRebel будет следить только за одним из них, и это также сбивает с толку.
Сигмар желает всего наилучшего