【小贴士】如何用jconsole连接jmx agent-rmi、jmxmp协议

本文详细介绍了如何通过RMI和JMXMP两种协议配置Java应用程序,以便使用JConsole进行远程监控。包括JVM参数设置、JMX连接器创建及JConsole连接步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 以rmi协议连接

    jvm启动时添加参数(更多参数参考https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html)

  • -Dcom.sun.management.jmxremote.port=8888
  • -Dcom.sun.management.jmxremote.authenticate=false
  • -Dcom.sun.management.jmxremote.ssl=false

   打开jconsole

   以ip:port(127.0.0.1:8888)方式连接

    以协议URL(service:jmx:rmi:///jndi/rmi://127.0.0.1:8888/jmxrmi)方式连接  

 

2 以jmxmp协议连接

jmxmp协议是jmx的可选协议,默认jdk是不带相关api的,所以要下载jar包jmxremote_optional(点击这里下载)放到"${JAVA_HOME}/jre/lib/ext/"。以jmxmp协议连接,java程序要自己创建jmxmp的jmx connector(因为jvm不会创建),创建也很简单,在spring框架下初始化一个Bean即可。如果程序中已经有jmxmp的connector(忽略)

    // 端口可配置
    @Value("${jmx.port:0}")
    private int jmxPort = 0;

    //只有配置了jmx.port且值大于0的时候才启动jmxmp connector
    @ConditionalOnExpression("T(Integer).valueOf('${jmx.port:0}') > 0 ")
    @Bean
    public ConnectorServerFactoryBean connectorServerFactoryBean() {
        ConnectorServerFactoryBean connectorServerFactoryBean = new ConnectorServerFactoryBean();
        connectorServerFactoryBean.setServiceUrl("service:jmx:jmxmp://0.0.0.0:" + jmxPort);
        connectorServerFactoryBean.setThreaded(true);
        connectorServerFactoryBean.setDaemon(true);
        return connectorServerFactoryBean;
    }

打开jconsole,如果${JAVA_HOME}/jre/lib/ext/中没有jmxremote_optional包,则用一下命令打开jconsole

jconsole -J-Djava.class.path=${JAVA_HOME}/lib/jconsole.jar:${JAVA_HOME}/lib/tools.jar:connector-path(jmxremote_optional包路径或其所在的文件夹)

,然后以协议url方式(service:jmx:jmxmp://127.0.0.1:6666)连接

 

连接结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值