Открытие недели: JRebel

Written by elwood

Если вам нужно что-то постоянно передеплоить, а то и перезапускать, и вам надоело ждать по 3 минуты, когда стартует JBoss Portal, не отчаивайтесь ! Используйте JRebel.
Эта штука реализует подход, более продвинутый, чем HotSwap, и можно не только менять код существующих методов в классах, но и дописывать новые, добавлять филды (в т.ч. статические), конструкторы итд. Для сервлет-контейнеров и app серверов есть специальные приблуды типа корректной обработки релоада не только джаваклассов, но и jsp, Hibernate proxy, в общем много чего.
Последнюю версию с таблэткой можно найти на том же rutracker.
bin/jrebel-app-config.cmd поможет вам настроить Вашу любимую IDE. Только учтите, что при создании run_jrebel.bat вам, скорее всего, нужно будет запускать не run.bat а run_jpda.bat (вы же хотите отлаживать свой код, не так ли?).

Единственный вопрос, остающийся после визарда – что должен содержать rebel.xml и вообще зачем он нужен ? Этот файл должен быть внутри деплоящегося модуля (jar, war) и должен содержать пути к классам, которые могут обновляться. JRebel при первой загрузке модуля смотрит его и начинает мониторить указанные директории. Если классы/jsp в них обновляются (по timestamp), он их перезагружает из этих директорий. В jar этот xml файл должен лежать в корне. Таким образом,

portal-core-lib.jar
> META-INF
> classes
> > some stuff
> rebel.xml

А в rebel.xml вот такая борода:

<?xml version="1.0" encoding="UTF-8" ?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://www.zeroturnaround.com/alderaan/rebel-2_0.xsd">
<classpath>
<dir name="C:/elwood/work/portal/core/out/production/portal-core-lib" />
</classpath>
</application>

HotSwap в IDEA можно (и даже нужно, скорее всего, поскольку он не будет работать корректно) отключить. Классы помечаются для релоада после их перекомпиляции посредством Ctrl-Shift-F9 (compile one class).
Релоадятся классы не сразу, а при доступе приложения к ним.