`
yanwei11911011
  • 浏览: 16284 次
  • 性别: 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  
 

相关推荐

    Monitoring Apache Tomcat with JMX.pdf

    "Monitoring Apache Tomcat with JMX" 是一种利用Java管理扩展(Java Management Extensions, 简称JMX)来实现这一目标的方法。JMX是一种标准的API,允许我们管理和监控Java应用程序,包括Tomcat,获取各种运行时...

    jmx 监控 tomcat

    1. **开启JMX支持** 在Tomcat的`conf/server.xml`文件中,找到`&lt;Server&gt;`标签,在其中添加一个`Service`,并配置一个`Connector`来启用RMI(Remote Method Invocation),以便远程访问JMX。示例如下: ```xml ...

    cmdline-jmxclient-0.10.3.jar + zabbix tomcat监控模板

    - 安装:下载`cmdline-jmxclient-0.10.3.jar`,并将其添加到系统PATH环境变量中,便于在命令行中直接调用。 - 连接:通过`java -jar cmdline-jmxclient-0.10.3.jar [hostname]:[port]`命令连接到运行Tomcat的...

    bootstrap开启与关闭tomcat

    1. **连接Tomcat的代码**: 示例代码可能展示了如何建立与Tomcat的JMX连接,或者如何通过API直接调用`Bootstrap`类。 2. **命令行界面**: 可能提供了一个简单的命令行界面,用户可以输入启动或停止命令,然后通过...

    Jmx实例demo下载

    6. **客户端示例**:项目可能还包含一个简单的客户端示例,展示了如何使用JMX API连接到MBean服务器,查询MBean信息,调用其操作,以及监控和改变MBean的属性。 通过分析`jmxdemo`项目的源代码,你可以学习如何创建...

    jmx三种访问方式

    1. **Servlet容器集成**:一种常见的实现JMX通过HTTP访问的方式是通过Servlet容器(如Tomcat)集成。开发者可以创建一个Servlet,该Servlet通过JMX API连接到MBeanServer,并将MBean的信息转换为HTML格式供用户在...

    cmdline-jmxclient.zip

    标题“cmdline-jmxclient.zip”指的是一个包含命令行界面的Java管理扩展(JMX)客户端工具,这个工具主要用于远程连接并监控Java虚拟机(JVM)以及运行在其中的应用,比如Tomcat服务器。JMX是一种Java平台提供的标准...

    Tomcat深入剖析pdf+源码(Tomcat运行原理)

    9. **JMX管理**:通过Java Management Extensions(JMX),开发者可以远程监控和管理Tomcat的运行状态,如查看线程池状态、内存使用情况等。 10. **性能优化**:优化Tomcat涉及调整线程池大小、缓存设置、减少上...

    《jmx技术介绍》配套源代码

    例如,Java应用服务器如Tomcat和JBoss都利用JMX进行内部监控和管理。开发者也可以使用JMX为自己的应用程序添加管理功能,实现更灵活的运维。 7. 配套源代码的作用: 《JMX技术介绍》的配套源代码提供了实际的编程...

    Tomcat源码研究.pdf

    5. 容器初探:Tomcat中的容器主要是指Servlet容器,它负责管理Servlet的生命周期,包括加载、初始化、调用以及销毁。容器设计基于责任链模式,每个容器都按照特定的顺序处理请求。深入研究容器的实现可以帮助我们...

    apache tomcat 8.5.16安装版安装文件

    此外,通过JMX(Java Management Extensions)可以监控Tomcat的运行状态,如内存使用、线程池、连接器等。 总结,Apache Tomcat 8.5.16是一个强大且灵活的Java Web服务器,广泛应用于各种规模的项目。了解其安装...

    tomcat9.0.85可用版本压缩包

    此外,还可以使用JMX(Java Management Extensions)工具远程监控和管理Tomcat实例。 10. **集成开发环境(IDE)支持**: 多数主流的Java IDE,如Eclipse、IntelliJ IDEA等,都支持直接集成Tomcat服务器,方便...

    Tomcat6.0(apachetomcat.exe)

    2. **JMX监控**:通过JMX(Java Management Extensions)可以远程监控Tomcat的状态,包括内存、线程、MBean等。 **六、扩展性与社区支持** Tomcat 6.0拥有活跃的开发者社区,提供了大量的扩展插件和第三方模块,如...

    嵌入式tomcat,带例子。

    5. **启动Tomcat**:调用`tomcat.start()`启动服务器,然后使用`tomcat.getServer().await()`等待服务器停止,通常在应用关闭时调用`tomcat.stop()`。 6. **示例代码**:描述中提到"带例子,简单易懂",可能压缩包...

    tomcat 5.5.17的admin

    JMX Proxy Web应用允许通过Web界面访问Tomcat服务器的JMX MBeans,从而实现更深度的监控和控制。 要使用"admin"包,你需要按照以下步骤操作: 1. 下载并解压Apache Tomcat 5.5.17压缩包。 2. 将`$CATALINA_HOME/...

    Tomcat5.0.28源代码

    7. **JMX (Java Management Extensions)**:用于监控和管理Tomcat的运行状态。 深入研究Tomcat 5.0.28的源代码,我们可以关注以下几个关键知识点: 1. **生命周期管理**:Catalina组件遵循特定的生命周期管理,...

    tomcat启动原理解析

    通过深入理解这些步骤,开发者可以更好地理解Tomcat如何处理请求,以及在遇到问题时定位可能的故障点。此外,优化Tomcat的启动配置,例如调整JVM参数、减少不必要的应用加载,可以显著提高服务器的启动速度和整体...

Global site tag (gtag.js) - Google Analytics