`
yanwei11911011
  • 浏览: 15764 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类

开启tomcat的jmx,以及调用

    博客分类:
  • jxm
阅读更多
1.window下找tomcat的bin/catalina.bat
2.在catalina.bat中找:doRun与:doStart,在这两个后面加以下代码:
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false"
3.以上代码中的9004端口号可自己任意设置
4.运行tomcat的bin/startup.bat进行启动

ps:启动失败,注意是否环境变量配置完全(参见tomcat环境变量的配置)

以上完成tomcat配置 


一下是JAVA中的调用

String jmxURL = "service:jmx:rmi:///jndi/rmi://localhost:9004/jmxrmi";// tomcat
																				// jmx
																				// url
		JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);
		Map map = new HashMap();
		String[] credentials = new String[] { "monitorRole", "QED" };
		map.put("jmx.remote.credentials", credentials);
		JMXConnector connector = JMXConnectorFactory.connect(serviceURL, map);
		MBeanServerConnection mbsc = connector.getMBeanServerConnection();

		// ------------------------ JVM -------------------------
		// 堆使用率
		ObjectName heapObjName = new ObjectName("java.lang:type=Memory");
		MemoryUsage heapMemoryUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(heapObjName, "HeapMemoryUsage"));
		long maxMemory = heapMemoryUsage.getMax();// 堆最大
		long commitMemory = heapMemoryUsage.getCommitted();// 堆当前分配
		long usedMemory = heapMemoryUsage.getUsed();
		System.out.println("heap:" + (double) usedMemory * 100 / commitMemory + "%");// 堆使用率

		MemoryUsage nonheapMemoryUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(heapObjName, "NonHeapMemoryUsage"));
		long noncommitMemory = nonheapMemoryUsage.getCommitted();
		long nonusedMemory = heapMemoryUsage.getUsed();
		System.out.println("nonheap:" + (double) nonusedMemory * 100 / noncommitMemory + "%");

		ObjectName permObjName = new ObjectName("java.lang:type=MemoryPool,name=Perm Gen");
		MemoryUsage permGenUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(permObjName, "Usage"));
		long committed = permGenUsage.getCommitted();// 持久堆大小
		long used = heapMemoryUsage.getUsed();//
		System.out.println("perm gen:" + (double) used * 100 / committed + "%");// 持久堆使用率


		
		
		
		//-------------------- Session ---------------   
        ObjectName managerObjName = new ObjectName("Catalina:type=Manager,*");  
        Set<ObjectName> s=mbsc.queryNames(managerObjName, null);  
        for (ObjectName obj:s){  
            System.out.println("应用名:"+obj.getKeyProperty("context"));  
            ObjectName objname=new ObjectName(obj.getCanonicalName());  
            System.out.println("最大会话数:"+ mbsc.getAttribute( objname, "maxActiveSessions"));  
            System.out.println("会话数:"+ mbsc.getAttribute( objname, "activeSessions"));  
            System.out.println("活动会话数:"+ mbsc.getAttribute( objname, "sessionCounter"));  
        }  
          
        //----------------- Thread Pool ----------------  
        ObjectName threadpoolObjName = new ObjectName("Catalina:type=ThreadPool,*");  
        Set<ObjectName> s2=mbsc.queryNames(threadpoolObjName, null);  
        for (ObjectName obj:s2){  
            System.out.println("端口名:"+obj.getKeyProperty("name"));  
            ObjectName objname=new ObjectName(obj.getCanonicalName());  
            System.out.println("最大线程数:"+ mbsc.getAttribute( objname, "maxThreads"));  
            System.out.println("当前线程数:"+ mbsc.getAttribute( objname, "currentThreadCount"));  
            System.out.println("繁忙线程数:"+ mbsc.getAttribute( objname, "currentThreadsBusy"));  
        }  
分享到:
评论
1 楼 cydyhty 2012-11-13  
 

相关推荐

    how-tomcat-works

    8.5.5 开启新线程执行类的重新载入 56 8.6 WebappClassLoader类 57 8.6.1 类缓存 58 8.6.2 载入类 59 8.6.3 应用程序 59 第9章 session管理 62 9.1 概述 62 9.2 Sessions 62 9.2.1 Session接口 62 9.2.2 ...

    How Tomcat Works: A Guide to Developing Your Own Java Servlet Container

    8.5.5 开启新线程执行类的重新载入 56 8.6 WebappClassLoader类 57 8.6.1 类缓存 58 8.6.2 载入类 59 8.6.3 应用程序 59 第9章 session管理 62 9.1 概述 62 9.2 Sessions 62 9.2.1 Session接口 62 9.2.2 ...

    jmx-clt:JMX 命令行工具提供轻量级 Unix 命令行访问以与远程 Java 进程通信

    初始版本包括 Kafka、Tomcat 和 ZooKeeper 的示例文件。 我们欢迎社区对这个 GitHub 存储库的配置文件做出贡献。 轻量级命令行界面使您能够访问特定的原始数据。 通过从脚本调用这些命令,您还可以捕获原始数据并...

    fallback:在 tomcat 上运行的 spring 框架项目的良好基础。 使用简单的配置来突出人们期望从 Java 应用程序服务器中获得的许多功能

    fallback 提供了一个很好的示例 Web 应用程序存档(war),用于集成 Spring/Hibernate/JMX/JPA/Ehcache。 为了提出这种干净的集成,您必须筛选大量相互冲突的博客帖子和文档。 我的目标是为您完成这项工作,并提供...

    Eclipse开发分布式商城系统+完整视频代码及文档

    ├─补充1:拔高课程(Redis3.0持久化、集群、MySQL5.6优化、Tomcat7优化) │ │ 打开必读.txt │ │ │ ├─课前资料 │ │ ├─MySQL5.6优化 │ │ │ MySql5.6性能优化.docx │ │ │ │ │ ├─Redis集群 │ ...

    web服务器和应用服务器.docx

    的,主要是EJB、 JNDI和JMX API等J2EE API方面的,还包含事务处理、数据库连接等功能,所以在企业级使用中,使用服务器提供的功能比WEB服务器强大的多。 web服务器和应用服务器全文共6页,当前为第2页。 web服务器...

    java开源包1

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    Zabbix监控培训视频.rar

    │ 38 04-安装tomcat并开启jmx远程监控.mp4 │ 39 05-使用zabbix-java-gateway监控jmx.mp4 │ 40 06-zabbix性能优化.mp4 │ 41 07-zabbix的api调用.mp4 │ 42 08-低级自动发现自动创建监控项.mp4 │ 43 09-低级自动...

    JAVA上百实例源码以及开源项目

     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

    JAVA上百实例源码以及开源项目源代码

    Java编写的显示器显示模式检测程序 2个目标文件 内容索引:JAVA源码,系统相关,系统信息检测 用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    1.4.8 RMI(远程方法调用) 1.4.9 JMS(Java消息服务) 1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式...

    java开源包11

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包2

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包3

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包6

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包5

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

Global site tag (gtag.js) - Google Analytics