2

我们升级到 Grails 4 / Java 11 并在开发过程中失去了热插拔功能。我尝试了 DCEVM,但应用程序无法启动(第一次 withNewSession 调用时出错)。

有没有人成功让 Grails 和 DCEVM 一起工作?

4

2 回答 2

0

最近我尝试使用 Hybris2005 + Java 11 + Windows + Eclipse。

按照以下给出的步骤并根据您的需要进行修改。

DCEVM 11 配置步骤。

  1. 在本地机器上下载并解压 java11-openjdk-dcevm-windows.zip
  2. 设置 JAVA_HOME=D:\java11-openjdk\dcevm-11.0.10+3 (根据系统中的位置调整路径)
  3. 在 eclipse 中转到 windows->Preference->Installed JRE 并将 JRE home 设置为 D:\java11-openjdk\dcevm-11.0.10+3 4 在 local.properties 中调整属性 tomcat.debugjavaoptions 如下

tomcat.debugjavaoptions=-XX:HotswapAgent=core -javaagent:D:/java11-openjdk/dcevm-11.0.10+3/lib/hotswap/hotswap-agent.jar=disablePlugin=Log4j2,disablePlugin=Spring,disablePlugin=Proxy, disablePlugin=AnonymousClassPatch,disablePlugin=ZK,autoHotswap=true -Djava.locale.providers=COMPAT,CLDR -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n -Xmx4G -Xms2G

  1. 另外,请设置 ANT_HOME 环境变量,这样我们就不会从 \hybris\bin\platform 运行 setantenv.bat 并相应地更新 PATH 变量。

  2. 执行 ant clean all 并在调试模式下启动 hybris。

  3. 在代码中添加 System.out.println() 语句,然后从该特定扩展文件夹执行 ant build 命令。

  4. 验证是否完成了热交换。

于 2021-02-18T09:34:13.950 回答
0

我已经使用 Grails 5.1.2 进行热插拔,但是 Hibernate 插件会导致

org.hibernate.HibernateException: No Session found for current thread

所以我不得不禁用 Hibernate 插件。这意味着对域类的任何更改仍需要重新启动。

  1. sdk 安装 java 11.0.9-trava

  2. sdk 使用 java 11.0.9-trava

  3. 将以下内容添加到 build.gradle 中的 bootRun jvmArgs:

    '-XX:HotswapAgent=fatjar'

  4. 创建 src/main/resources/hotswap-agent.properties 包含:

    disabledPlugins=休眠

    自动热交换=真

  5. 您现在应该能够启动 Grails,并且无需重新启动即可获取任何代码更改。

于 2022-02-25T10:30:19.367 回答