使用Corretto的JConsole连接WildFly 26失败,求解决方法
WildFly 26 + Java 11 无法通过JConsole连接JMX的解决思路
检查WildFly JMX远程访问配置
WildFly 10及以后版本,JMX远程访问的默认配置逻辑和WildFly 9存在差异。编辑standalone/configuration/standalone.xml(域模式下为domain.xml),找到JMX子系统配置块,调整如下:<subsystem xmlns="urn:jboss:domain:jmx:1.6"> <expose-resolved-model/> <expose-expression-model/> <remoting-connector/> <!-- 开启远程访问并关联安全域 --> <remote-access security-realm="ManagementRealm"/> <!-- 若需允许外部机器连接,修改绑定地址为0.0.0.0 --> <connector name="jmx-connector" bind-address="0.0.0.0" port="9990"/> </subsystem>配置完成后重启WildFly,确保
remote-access关联的安全域正确(默认是ManagementRealm)。适配Java 11的JVM参数
Java 9+对JMX/RMI的默认行为做了调整,需在WildFly启动脚本(standalone.conf或domain.conf)中添加以下JVM参数:JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9990" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.rmi.port=9990" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=true" JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false" JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=你的服务器IP或localhost"注意:生产环境建议开启
ssl=true并配置严格的认证规则。本地连接的特殊处理
若本地JConsole无法识别WildFly实例,可通过进程ID直接连接:- 执行
jps命令获取WildFly的进程ID(对应进程通常为jboss-modules.jar) - 打开JConsole,在“本地进程”输入框手动输入
pid:<进程ID>,回车尝试连接
- 执行
验证管理端口与认证信息
- 先用WildFly命令行客户端测试端口可用性:
./jboss-cli.sh --connect controller=localhost:9990,能成功连接则说明端口正常 - 远程连接JConsole时,需使用正确的JMX URL:
service:jmx:remote+http://<服务器IP>:9990,并输入通过add-user.sh添加的管理用户名和密码(默认强制认证)
- 先用WildFly命令行客户端测试端口可用性:
排查端口与防火墙问题
- 用
netstat -tulpn | grep 9990(Linux)或netstat -ano | findstr 9990(Windows)检查端口是否被WildFly占用 - 确保服务器防火墙允许9990端口(或自定义JMX端口)的入站流量
- 用
内容的提问来源于stack exchange,提问作者Martin Schlesier
相关产品推荐
相关产品推荐

