Java SE和Java EE中的Hotswap代理

时间:2017-08-17 18:25:24

标签: maven java-ee netbeans-8 dcevm hotswapagent

我发现Hotswapagent在SE和EE应用程序中的工作方式不同。在SE应用程序中,我可以向类中添加一个新属性(例如私有Long x;),没有任何问题,Hotswap可以更新代码。但是我无法在JSF ManagedBean的EE应用程序中执行此操作,我得到了"虚拟机不支持此操作:架构更改未实现"

我的EE应用程序是带有Wildfly 10的Netbeans 8.2中的Maven企业应用程序(ejb,web,ear项目)。我使用DCEVM(jdk1.8.0_112)和Hotswapagent 1.1.0。

简单的代码更改(例如编辑方法主体)在SE和EE应用程序中都有效,但它既不能在ejb也不能在web项目中处理新的属性创建。我想知道我是否在设置中犯了一些错误,或者这是因为SE和EE环境之间存在差异。谢谢你的任何想法。

4 个答案:

答案 0 :(得分:0)

它没有问题。仅当我在调试模式下启动应用程序时。

答案 1 :(得分:0)

我希望添加一个字段被视为模式更改(在这种情况下,您将在Java SE和Java EE中获得异常)。但Java EE是通过在运行时修改类(字节码)来实现的。我想当你插入一个字段时,不仅仅是那个字段被添加了,而且还引入了一些合成的getter和/或setter,这肯定是架构更改。

答案 2 :(得分:0)

HotswapAgent适用于JVM级别,Java SE和Java EE之间应该没有区别。很可能你的Wildfly服务器没有使用DCEVM,请检查你的设置。

答案 3 :(得分:0)

在这里,您需要配置所有EE应用服务器 Payara + DCEVM config