Попробуйте использовать Payara + Jrebel + Eclipse

Я пытаюсь настроить в моем Eclipse neon.3 (4.6.3):

  • Контейнер сервера Payara (4.1.2.174)
  • Агент JRebel 7.1.3

для приложения, упакованного в формате EAR. В процессе развертывания в журнале Payara или JRebel не отображается никаких ошибок. Я получаю следующие сообщения относительно моих EJB:

2017-12-12T14:52:50.933-0200|INFORMAÇÕES: 2017-12-12 14:52:50 JRebel: Watching 'alfa.bc.logistica.core.ejb.AlfaTransportadorEJB' for changes
2017-12-12T14:52:50.936-0200|INFORMAÇÕES: Portable JNDI names for EJB AlfaTransportadorEJB: [java:global/alfa.bc.logistica.ee/alfa.bc.logistica.core.em/AlfaTransportadorEJB!alfa.bc.logistica.core.remote.AlfaTransportadorRemote, java:global/alfa.bc.logistica.ee/alfa.bc.logistica.core.em/AlfaTransportadorEJB]

Когда я вношу какие-либо изменения в их контролируемые классы (например, AlfaTransportadorEJB), изменения не вносятся в контейнер, но файлы .class компилируются и успешно генерируются в каталоге target моего пути к классам (в опции IDE "Сборка автоматически" = истинный).

По-видимому, файлы .class не «разворачиваются» в контейнере для выполнения процесса перезагрузки загрузки классов.

Дополнительная информация:

Для настройки JRebel я следовал этому руководству. .

Для той же версии соответствующего приложения EAR «перезагрузка классов» успешно выполняется с использованием Glassfish 4.1 с Jrebel 7.0.5. Однако в этом случае в процессе развертывания контейнер говорит следующее.

.

2017-12-12T15:02:24.167-0200|Informações: 2017-12-12 15:02:24 JRebel: Directory 'C:\Documentos\cooperateEE\logistica\alfa.bc.logistica.core.em\target\classes' will be monitored for changes.
... <another logs here> ...
2017-12-12T15:03:45.994-0200|Informações: 2017-12-12 15:03:45 JRebel: Watching 'alfa.bc.logistica.core.ejb.AlfaTransportadorEJB' for changes
2017-12-12T15:03:45.998-0200|Informações: Portable JNDI names for EJB AlfaTransportadorEJB: [java:global/alfa.bc.logistica.ee/alfa.bc.logistica.core.em/AlfaTransportadorEJB!alfa.bc.logistica.core.remote.AlfaTransportadorRemote, java:global/alfa.bc.logistica.ee/alfa.bc.logistica.core.em/AlfaTransportadorEJB]

Я думаю, что JRebel не отслеживает каталог target, чтобы затем перезагрузить скомпилированные файлы .class в контейнере.

По какой причине JRebel не идентифицирует мой целевой каталог, как указано в приведенном выше журнале («will be monitored for changes»)?


person Darlyn Vailatti    schedule 12.12.2017    source источник
comment
will be monitored for changes печатается, если модуль содержит файл rein.xml с допустимым путем. Rebel.xml должен быть расположен в корне EJB jar и в WEB-INF/classes файлов WAR. EAR-ам не нужен файл manifest.xml, только их подмодули. Вы хотите сказать, что точно такой же EAR при развертывании на Glassfish работает, но не с сервером payara, или между ними есть какие-то различия?   -  person Murka    schedule 12.12.2017
comment
@Murka да, файл rebel.xml находится в корневой папке проекта с файлами EJB jar, и да, та же версия приложения с файлами rebel.xml приводит к другому поведению. Я только что провел еще один тест с JRebel версии 7.0.5 с Payara, но получил те же результаты. Похоже, Payara вызывает другое поведение на JRebel.   -  person Darlyn Vailatti    schedule 12.12.2017
comment
В таком случае требуется более глубокое исследование. Для этого включите ведение журнала на уровне трассировки через JRebel Configuration -> Advanced -> Log level: Trace. Затем запустите payara и попробуйте внести изменения, которые не перезагружаются, и отправьте запрос в службу поддержки через Справка -> JRebel -> Отправить запрос в службу поддержки. Также включите ссылку на этот вопрос.   -  person Murka    schedule 13.12.2017


Ответы (1)


Я нашел проблему. Сравнив jrebel.log между Glassfish (работает) и payara (не работает), я понял, что для Payara в логе написано:

2017-12-22 08:04:47.012 INFO  [10] [Banner]      
#############################################################
2017-12-22 08:04:47.012 INFO  [10] [Banner]  
2017-12-22 08:04:47.013 INFO  [10] [Banner]  Legacy Agent 7.0.5 (201702281652)
2017-12-22 08:04:47.013 INFO  [10] [Banner]  (c) Copyright ZeroTurnaround AS, Estonia, Tartu.
2017-12-22 08:04:47.014 INFO  [10] [Banner]  
2017-12-22 08:04:47.015 INFO  [10] [Banner]  Over the last 10 days JRebel prevented
2017-12-22 08:04:47.015 INFO  [10] [Banner]  at least 66 redeploys/restarts saving you about 2.7 hours.
2017-12-22 08:04:47.017 INFO  [10] [Banner]  
2017-12-22 08:04:47.017 INFO  [10] [Banner]  JRebel started in remote server mode.
2017-12-22 08:04:47.025 INFO  [10] [Banner]  
2017-12-22 08:04:47.026 INFO  [10] [Banner]  
2017-12-22 08:04:47.026 INFO  [10] [Banner]      
#############################################################

JRebel запущен в режиме удаленного сервера

В то время как в Glassfish это сообщение не регистрируется. Поэтому я перешел по этой ссылке в документации JRebel и отключил remote server mode удаление параметров виртуальной машины на контейнер:

-Drebel.remoting_plugin=false

Короче говоря, проблема заключалась в том, что JRebel инициализировался с параметром режима активного сервера.

person Darlyn Vailatti    schedule 22.12.2017