尝试使用 Payara + Jrebel + Eclipse

Try to use Payara + Jrebel + Eclipse

我正在尝试在我的 Eclipse neon.3 (4.6.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 选项中 "Build automatically" = true)。

显然 .class 文件不在容器上 "deploy" 以执行 Class 加载的重新加载过程。

附加信息:

对于 JRebel 配置,我遵循了 this 教程。

对于相同版本的相应 EAR 应用程序,"reloading of classes" 使用 Glassfish 4.1Jrebel 7.0.5[=49 成功完成=].但是在这种情况下,在部署过程中,容器会显示以下内容。

.

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")?

我发现了问题。比较 Glassfish(有效)和 payara(无效)之间的 jrebel.log,我意识到对于 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 started in remote server mode

在 glassfish 中,不会记录此消息。所以我在 JRebel 文档中遵循 this link 并禁用 remote server mode 删除容器上的 VM 选项:

-Drebel.remoting_plugin=false

简而言之,问题是 JRebel 正在使用活动服务器模式参数进行初始化