【问题标题】:Hotswap agent in Java SE and Java EEJava SE 和 Java EE 中的热插拔代理
【发布时间】:2017-08-17 18:25:23
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        HotswapAgent 工作在 JVM 级别,Java SE 和 Java EE 应该没有区别。很可能您的 Wildfly 服务器不使用 DCEVM,请检查您的设置。

        【讨论】:

          【解决方案4】:

          这里有所有你需要知道的来配置任何 EE 应用服务器 Payara + DCEVM config

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-10-28
            • 1970-01-01
            • 1970-01-01
            • 2015-01-02
            • 2012-03-17
            • 1970-01-01
            • 1970-01-01
            • 2022-01-28
            相关资源
            最近更新 更多