Хотя Mule ESB официально не поддерживается JRebel, мы нашли обходное решение. Прежде всего, позвольте мне начать, заявив, что:
- По состоянию на сегодняшний день, это не возможность горячего развертывания Mule XML потоков с помощью JRebel. Однако Мул предлагает свои собственные механизмы для достижения этой же цели. Таким образом, отсутствие поддержки JRebel для этого не является нарушителем транзакций.
Итак, единственное, что мы можем развернуть, - это классы Java, которые по-прежнему очень приветствуются. Как мы это делаем?
Начать настройку агента JRebel в $ MULE_HOME/conf/wrapper.conf. Требуемые линии, в нашем случае были:
wrapper.java.additional.13=-javaagent:{path to jrebel.jar}
wrapper.java.additional.14=-Xbootclasspath:{path to rebelboot.jar}
wrapper.java.additional.16=-Drebel.remoting_plugin=true
wrapper.java.additional.19=-Drebel.remoting_port={whatever}
Эти параметры при JVM, необходимые для запуска JRebel вместе с Mule. Нумерация параметров произвольна.
Мы хотим использовать JRebel в удаленном режиме. Вы можете прочитать об этом режиме в docs. В этом и состоит причина использования пареметров wrapper.java.additional.16=-Drebel.remoting_plugin=true
и wrapper.java.additional.19=-Drebel.remoting_port={whatever}
.
- Теперь запустите Mule, выполнив mule.bat или mule.sh, в зависимости от вашей среды (Windows или * nix). JRebel должен начать с этого.
- Разместите свои приложения Mule внутри $ MULE_HOME/apps. Они будут автоматически развернуты, и отныне их файлы .class будут контролироваться JRebel.
- Внутри вашей IDE установите плагин JRebel и примените свою лицензию. Впоследствии добавьте природу JRebel в свой проект и настройте URL-адрес удаленного сервера, используя порт, который мы предварительно определили внутри
wrapper.conf
.
- Выполняйте любые изменения, которые необходимо выполнить для вашего кода и синхронизации. Они должны быть успешно развернуты в запущенном экземпляре Mule.
- Некоторые из представленных параметров JVM не требуются для конфигурации. Сначала параметр JVM «wrapper.java.additional.15 = -agentpath: {path to jrebel64.dll}» не нужен, потому что вы уже настроили javaagent «wrapper.java.additional.13 = -javaagent: {путь к jrebel .jar}». Второй параметр «wrapper.java.additional.20 = -Drebel.resource_cache = true» не требуется, поскольку значение по умолчанию - true. –
Я буду корректировать ответ с вашими исправлениями. Большое спасибо. :) – Enrique