当前位置: 首页 > news >正文

详解tomcat中的jmx监控

目录

1.概述

2.如何开启tomcat的JMX

3.tomcat如何实现JMX的源码分析


1.概述

本文是博主JAVA监控技术系列文章的第二篇,前面一篇文章中我们介绍了JAVA监控技术的基石——jmx:

【JMX】JAVA监控的基石-CSDN博客

本文我们将从使用和源码实现两个方面聊一下jmx的落地实现范例——tomcat中的jmx。

tomcat作为一个web server,其选用jmx来实现监控功能。之所以选择jmx是因为jmx是java se原生的能力,不需要第三方依赖,在web server这种基础组件中,选用原生的技术可以避免很多三方依赖带来的不便。

2.如何开启tomcat的JMX

jmx是由JVM来支持实现的标准,所以开启jmx本质上就是通过配置启动参数的方式来实现的,例如,以下是一个简单的 Java 命令,启用了 JMX 监听,并配置了 JMX 服务器的地址和端口:

java -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-jar myapplication.jar

tomcat本质也是个Java程序,所以也是通过配置启动参数来开启jmx的。本文是基于Windows环境来配置的,Linux环境其实也大差不差。配置Catalina.bat,在Execute The Requested Command下面加上下面的配置:

set JAVA_OPTS=%JAVA_OPTS% -Djava.rmi.server.hostname=192.168.56.1 -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

然后启动tomcat,打开jconsole:

连接上我们启动的这个tomcat,MBean列表里面可以看到tomcat的所有MBean,对tomcat源码熟悉的读者会发现,tomcat的核心组件都以MBean的方式被注册进JMX Server中了。

3.tomcat如何实现JMX的源码分析

首先博主去github上下载了tomcat7.0.105版本的源码。前面我们聊过jmx,要使用jmx,就要先注册相关的MBean。tomcat里面有一个jmxEnabled接口,这个接口就是用来实现MBean的注册的。它定义了两个方法,一个用来注册MBean,一个用来卸载MBean。

这个接口的实现类是LifecycleMBeanBase,这个类里实现了注册和卸载MBean的方法。对tomcat源码有了解的读者对这个类会很熟悉(当然不了解也别怕),LifecycleMBeanBase这个类是tomcat中用来管理各个组件的生命周期的,也就是说这个组件里会实现一些在各个组件初始化或者销毁的时候要做的额外动作。

来我们好好读一下这里的源码:

protected void initInternal() throws LifecycleException { ? ? ? // If oname is not null then registration has already happened via ? ? ? // preRegister(). ? ? ? if (oname == null) { ? ? ? ? ? 获取MBeanServer ? ? ? ? ? mserver = Registry.getRegistry(null, null).getMBeanServer(); //注册MBean ? ? ? ? ? oname = register(this, getObjectNameKeyProperties()); ? ? ? } ? } //注册MBean的方法 ? protected final ObjectName register(Object obj, ? ? ? ? ? String objectNameKeyProperties) { ? ? ? ? // Construct an object name with the right domain ? ? ? StringBuilder name = new StringBuilder(getDomain()); ? ? ? name.append(':'); ? ? ? name.append(objectNameKeyProperties); ? ? ? ? ObjectName on = null; ? ? ? ? try { ? ? ? ? ? on = new ObjectName(name.toString()); ? ? ? ? ? //将自己注册到MBeanServer中 ? ? ? ? ? Registry.getRegistry(null, null).registerComponent(obj, on, null); ? ? ? } catch (MalformedObjectNameException e) { ? ? ? ? ? log.warn(sm.getString("lifecycleMBeanBase.registerFail", obj, name), ? ? ? ? ? ? ? ? ? e); ? ? ? } catch (Exception e) { ? ? ? ? ? log.warn(sm.getString("lifecycleMBeanBase.registerFail", obj, name), ? ? ? ? ? ? ? ? ? e); ? ? ? } ? ? ? ? return on; ? }
http://www.jsqmd.com/news/469939/

相关文章:

  • 记录一下在Win上搭建RustDesk
  • 天津电缆生产厂家2026年3月名单更新——天津电缆生产厂家推荐 - 品牌2026
  • 2026年初至今热门短视频运营品牌推荐与深度解析 - 2026年企业推荐榜
  • 工业档边提升链板优质供应商推荐榜:食品输送网带/304不锈钢网带/304不锈钢链板/冲孔链板/档边提升链板/流水线输送网带/选择指南 - 优质品牌商家
  • 2026年常德抖音推广公司实力盘点与选择指南 - 2026年企业推荐榜
  • 2026年3月内蒙古砂石圆锥破碎机优质供应商权威评测 - 2026年企业推荐榜
  • 2026年3月铁路地铁电力电缆生产厂家推荐:中低压、低压、中压、变频等电缆厂家 - 品牌2026
  • 2026专业埃及公司注册服务机构推荐榜:新加坡公司注册/泰国公司注册/海外公司注册/海外投资备案ODI/深圳ODI备案代办/选择指南 - 优质品牌商家
  • 2026防爆气泵优质品牌推荐指南:无刷气泵、气体采样泵、真空脱气气泵、耐腐蚀气泵、脱气真空泵、医用负压真空泵、小型气泵选择指南 - 优质品牌商家
  • 2026航空紧固件优质螺丝推荐榜:螺丝CNC车件、螺丝五金异形件、螺丝精密轴、螺丝销轴、非标螺丝、异形螺丝、微型螺丝选择指南 - 优质品牌商家
  • 2026年评价高的保安服务品牌推荐:常规保安服务热门公司推荐 - 品牌宣传支持者
  • 2026年电缆生产厂家精选及实用推荐 适配多场景线缆采购需求 - 品牌2026
  • Claude Code 番外篇:内置 `/loop` 全解,cron 调度 + 自然语言,自动监控只需一行
  • 2026年中国电缆一线标杆品牌推荐:十大主流线缆品牌解析 - 品牌2026
  • 2026年3月控制电缆生产厂家推荐:涵塑料绝缘、特种控制、计算机、太阳能光伏等 - 品牌2026
  • 2026优质S5代理排行榜:宽带多拨、模拟器、短效IP、静态IP、S5代理、SDK包、http、socks5、代理IP选择指南 - 优质品牌商家
  • 2026年靠谱的厂区安保服务品牌推荐:商超安保服务用户好评公司 - 品牌宣传支持者
  • 2026年乐吧车优质产品推荐指南:360摇滚乐吧车、亲子双人碰碰车、公园碰碰车、发光漂移碰碰车、商场碰碰车、地网碰碰车选择指南 - 优质品牌商家
  • 基于SpringBoot的计算机学习系统的设计与实现代码毕业论文+PPT(附源代码+演示视频)
  • 2026年U型锁扣板采购指南:权威测评与靠谱厂家推荐 - 2026年企业推荐榜
  • 2026知名废水处理设备品牌推荐指南:福建污水处理设备公司/陕西污水处理设备厂家/mvr厂家/一体化废水处理设备/选择指南 - 优质品牌商家
  • 2026年玻璃洗瓶设备推荐榜:全自动洗瓶机/啤酒瓶洗瓶机/回收瓶洗瓶机/实验室洗瓶机/毛刷式洗瓶机/组培瓶洗瓶机/选择指南 - 优质品牌商家
  • 《C++ Web 自动化测试实战:常用函数全解析与场景化应用指南》
  • 芋道源码(无遮羞布版)Spring Boot 全景指南
  • 【C++篇】C++11:可变参数模板
  • 2026年防雷领域优质避雷塔推荐榜:避雷针塔/酒杯型电力塔/镀锌避雷塔/防雷避雷塔/高压输电塔/三柱避雷塔/单管避雷塔/选择指南 - 优质品牌商家
  • 【C++篇】C++11:lambda表达式
  • 港科校友| 罗咏丰:以校友导师身份回馈科大
  • 2026创新型企业知识产权维权机构推荐榜:商业竞业限制调查、商业背景调查、商业诋毁调查、知识产权代理、知识产权侵权取证选择指南 - 优质品牌商家
  • 2026年优质镀锌避雷塔行业推荐榜:钢管避雷塔/镀锌监控塔架/防火监控塔架/防雷避雷塔/单管避雷塔/圆钢避雷塔/选择指南 - 优质品牌商家