【发布时间】:2017-12-12 17:26:15
【问题描述】:
我正在尝试在我的 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)进行任何更改时,不会对容器进行更改,而是在我的类路径的target 目录中成功编译并生成了.class 文件(在 IDE 选项“自动构建”= true)。
显然.class 文件没有“部署”在容器上以执行类加载的重新加载过程。
其他信息:
对于 JRebel 配置,我遵循 this 教程。
对于相应 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”)那样识别我的目标目录的原因是什么?
【问题讨论】:
-
如果模块包含具有有效路径的 rebel.xml,则打印
will be monitored for changes。 rebel.xml 需要位于 EJB jar 的根目录和 WAR 的WEB-INF/classes中。 EAR-s 本身不需要 rebel.xml,只需要它们的子模块。您是说部署到 glassfish 时完全相同的 EAR 可以工作,但不能用于 payara 服务器,或者它们之间有什么区别? -
@Murka 是的,
rebel.xml文件位于带有 EJB jar 的项目的根文件夹中,是的,带有rebel.xml文件的相同版本的应用程序会导致不同的行为.我刚刚使用 Payara 对 JRebel 7.0.5 版进行了另一次测试,但得到了相同的结果。看起来 Payara 在 JRebel 上引起了一些不同的行为。 -
在这种情况下,它需要更深入的调查。为此,通过 JRebel 配置 -> 高级 -> 日志级别启用跟踪级别日志记录:跟踪。然后启动 payara 并尝试进行不重新加载的更改并通过 Help -> JRebel -> Submit a Support Ticket 提交支持票。还包括此问题的链接。
标签: jakarta-ee eclipse-plugin jrebel payara