如何在Java 11环境下将VisualVM连接至JBoss EAP 7.4.0
Java 11环境下VisualVM连接JBoss EAP 7.4.0的可行方案
问题回顾
尝试通过VisualVM监控远程JBoss EAP 7.4.0时,因参考旧教程使用Java 11已废弃的-Xbootclasspath/p参数导致启动失败;替换为-Xbootclasspath/a或使用--patch-module时,又出现日志管理器未正确加载、类找不到等错误。
正确配置步骤
1. 修改standalone.conf配置文件
移除所有与-Xbootclasspath、--patch-module相关的错误配置,保留JMX远程参数及必要JVM配置,让JBoss模块系统自动处理日志管理器加载。修改后的核心JAVA_OPTS配置如下:
if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,org.jboss.logmanager" fi if [ "x$JAVA_OPTS" = "x" ]; then JAVA_OPTS="-Xms16g -Xmx16g -XX:MetaspaceSize=1g -XX:MaxMetaspaceSize=1g -Djava.net.preferIPv4Stack=true" JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true" # JMX远程监控核心配置 JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9010" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.local.only=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false" # 允许外部机器访问管理端口(必填) JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=0.0.0.0" # 指定远程服务器IP,避免RMI地址解析错误(必填) JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=你的远程服务器IP" else echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS" fi # enable garbage collection logging if not set in environment differently if [ "x$GC_LOG" = "x" ]; then GC_LOG="true" else echo "GC_LOG set in environment to $GC_LOG" fi
2. 关键配置说明
- 移除bootclasspath类路径参数:JBoss EAP 7.4已原生适配Java 11,其模块系统会自动加载
org.jboss.logmanager,无需手动指定启动类路径,避免与JVM的模块化机制冲突。 - JMX远程参数:保留端口、认证、SSL配置,新增
-Djboss.bind.address.management=0.0.0.0开放管理端口对外访问,-Djava.rmi.server.hostname指定远程服务器IP,解决VisualVM连接时的RMI地址解析问题。 - 日志管理器:无需手动添加
-Djava.util.logging.manager=org.jboss.logmanager.LogManager,JBoss启动脚本会通过模块系统自动配置正确的日志管理器。
3. 启动JBoss EAP
执行启动脚本:
./standalone.sh
4. VisualVM连接操作
在本地VisualVM中:
- 右键点击「远程」→「添加远程主机」,输入远程服务器IP
- 右键点击已添加的主机→「添加JMX连接」,输入连接地址:
service:jmx:rmi:///jndi/rmi://远程服务器IP:9010/jmxrmi - 取消勾选「需要SSL连接」,点击「确定」即可完成连接
常见问题排查
- 若连接失败,检查远程服务器防火墙是否开放9010端口
- 查看JBoss启动日志,搜索
jmxremote关键字验证配置是否生效 - 确认远程服务器的Java版本为Java 11,且与JBoss EAP 7.4的版本兼容
内容的提问来源于stack exchange,提问作者Still Shi
相关产品推荐
相关产品推荐

