我正在尝试在我的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选项“自动构建”中=真正)。
显然,.class
文件不是“部署”在容器上进行类加载的重新加载过程。
附加信息:
对于JRebel配置,我遵循了this教程。
对于相应版本的相应EAR应用程序,使用带有Jrebel 7.0.5的Glassfish 4.1成功完成了“重新加载类”。但是在这种情况下,在部署过程中,容器会出现以下情况。
.
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
目录,然后在conteiner中重新加载已编译的.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以远程服务器模式启动
在glassfish中,不会记录此消息。所以我在JRebel文档中跟踪了this链接并禁用remote server mode
删除容器上的VM选项:
-Drebel.remoting_plugin=false
简而言之,问题是JRebel正在使用活动服务器模式参数进行初始化