Jmx协议远程连接java服务器

注意:本例里,我用的是jdk17

通常用jdk自带的jconsole,或者想要功能强大点的使用visualVM

需要java服务器在启动的时候加上以下参数

复制代码
-Dcom.sun.management.jmxremote
启用jxm远程连接

-Djava.rmi.server.hostname=10.1.3.99
指定jxm监听地址,本机ip或者域名都可以

-Dcom.sun.management.jmxremote.port=3214
指定jxm监听端口

-Dcom.sun.management.jmxremote.ssl=false
不需要ssl连接

-Dcom.sun.management.jmxremote.authenticate=false
不需要验证

为了安全考虑,可以加上验证

复制代码
-Dcom.sun.management.jmxremote.authenticate=true
需要验证用户名密码

-Dcom.sun.management.jmxremote.access.file=$JAVA_HOME/conf/management/jmxremote.access
用户配置文件

-Dcom.sun.management.jmxremote.password.file=$JAVA_HOME/conf/management/jmxremote.password
用户密码配置文件

上面两个配置文件,通常在jdk目录下,不同版本对应查找一下
#ll $JAVA_HOME/conf/management
jmxremote.access
jmxremote.password.template
management.properties

#cat jmxremote.access
上面一堆注释。。。
monitorRole   readonly
controlRole   readwrite \
              create javax.management.monitor.*,javax.management.timer.* \
              unregister

#cp jmxremote.password.template jmxremote.password
#vim jmxremote.password
把下面两行的注释去除(并且行首不能有空格),这就是jmx默认的两个用户名和密码,例如monitorRole用户、密码是QED
monitorRole  QED
controlRole  R&D

#chmod 600 jmxremote.password
一定要设置这个权限,不然运行会报密码文件不安全的错误

java服务端的配置完成了,可以启动客户端连接试试了

用jconsole举例

连接--》新建连接--》远程连接--》输入hostname:port,如果启用了用户验证,还要输入用户名、口令--》连接--》选择"不安全的连接"--》操作完成

相关推荐
JustMove0n10 分钟前
互联网大厂Java面试全流程问答及技术详解
java·jvm·redis·mybatis·dubbo·springboot·多线程
爱倒腾的老唐10 分钟前
02、STM32——嵌入式芯片
linux·stm32·嵌入式硬件
SimonKing19 分钟前
5分钟学会!把代码从本地推送到 GitHub,就是这么简单
java·后端·程序员
玹外之音19 分钟前
Spring AI 11 种文档切割策略全解析
java·spring·ai编程
AryShaw35 分钟前
macOS 上搭建 RK3568 交叉编译环境
linux·macos
Java练习两年半37 分钟前
互联网大厂 Java 求职面试:技术栈与微服务深度解析
java·微服务·面试·技术栈
Seven9743 分钟前
类字节码:揭开Java虚拟机运行机制的神秘面纱
java
芒果披萨1 小时前
Linux文件类基础命令行1
linux·运维·服务器
学嵌入式的小杨同学1 小时前
STM32 进阶封神之路(八):外部中断 EXTI 实战 —— 按键检测从轮询到中断(库函数 + 寄存器双版本)
linux·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
lang201509281 小时前
从零开始掌握 Logback:Java 日志框架的“Hello World”实战指南
java·单元测试·logback