我们正在寻找 jRebel 的免费替代品。看来热插拔代理是 jRebel 的一个免费的良好替代品。但我不确定它是否支持weblogic服务器,是否有人在weblogic服务器上使用hotswap代理以及如何使用?
最佳答案
DCEVM 和 HotswapAgent 不支持 Weblogic。维护者对此很清楚,在许多问题中都提到过:here , here和 here .
因此,如果您正在寻找一种可以在 WLS 上完美地开箱即用、最新且支持最新 Java 版本的解决方案,那么恐怕 DCEVM 不是其中之一。
但如果您同意不安全、黑客解决方案,请继续阅读。
dcevm 和 weblogic 的第一个问题是如何让它运行。我测试过weblogic docker image使用 dcevm + HotswapAgent 以及大多数 oraclejdk 和 dcevm 版本的组合会导致 error或其他 JVM/WLS 在启动时崩溃。 很久以前的维护者 said oraclejdk should与 dcevm 一起工作,但我想这并没有得到积极的支持/测试,只是在某些版本组合上巧合地工作。 WLS 使用的深层魔法也无济于事。
但是感谢some comments我发现 WLS 将在这两个上启动:
- oraclejdk 1.8.0_05 + dcevm 安装程序-light-jdk8u5.52.jar (25.5-b02-dcevmlight-58)
- oraclejdk 1.8.0_25 + dcevm DCEVM-light-8u45-installer.jar (25.45-b02-dcevmlight-15
注意:这些版本很古老,可能存在很多安全漏洞,使用风险自负。
程序:
- 覆盖镜像中原来的java
/u01/jdk/
, - 从 dcevm 安装程序中获取
linux_amd64_compiler2/product/libjvm.so
并将其放入/u01/jdk/jre/lib/amd64/dcevm
- 将
-XXaltjvm=dcevm
添加到 weblogic 命令行。 - (可选)获取 HotswapAgent 功能:
- 在
/u01/jdk/jre/lib/amd64/hotswap
中添加hotswap-agent-core.jar
或hotswap-agent.jar
> 与 wls 命令行上的选项-javaagent:/u01/jdk/jre/lib/amd64/hotswap/hotswap-agent.jar
一起使用 - 将
hotswap-agent.properties
添加到您的 war/ear/classpath - 另请参阅https://github.com/HotswapProjects/HotswapAgent/pull/418
- 在
现在运行远程调试 session ,通过添加新方法修改类并重新编译 - 标准热插拔不支持热插拔新方法,它仅在 dcevm 处于 Activity 状态时才起作用。
关于java - 带有 Hotswap 代理的 Weblogic 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70528120/