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"));
}
分享到:
相关推荐
"Monitoring Apache Tomcat with JMX" 是一种利用Java管理扩展(Java Management Extensions, 简称JMX)来实现这一目标的方法。JMX是一种标准的API,允许我们管理和监控Java应用程序,包括Tomcat,获取各种运行时...
1. **开启JMX支持** 在Tomcat的`conf/server.xml`文件中,找到`<Server>`标签,在其中添加一个`Service`,并配置一个`Connector`来启用RMI(Remote Method Invocation),以便远程访问JMX。示例如下: ```xml ...
- 安装:下载`cmdline-jmxclient-0.10.3.jar`,并将其添加到系统PATH环境变量中,便于在命令行中直接调用。 - 连接:通过`java -jar cmdline-jmxclient-0.10.3.jar [hostname]:[port]`命令连接到运行Tomcat的...
1. **连接Tomcat的代码**: 示例代码可能展示了如何建立与Tomcat的JMX连接,或者如何通过API直接调用`Bootstrap`类。 2. **命令行界面**: 可能提供了一个简单的命令行界面,用户可以输入启动或停止命令,然后通过...
6. **客户端示例**:项目可能还包含一个简单的客户端示例,展示了如何使用JMX API连接到MBean服务器,查询MBean信息,调用其操作,以及监控和改变MBean的属性。 通过分析`jmxdemo`项目的源代码,你可以学习如何创建...
1. **Servlet容器集成**:一种常见的实现JMX通过HTTP访问的方式是通过Servlet容器(如Tomcat)集成。开发者可以创建一个Servlet,该Servlet通过JMX API连接到MBeanServer,并将MBean的信息转换为HTML格式供用户在...
标题“cmdline-jmxclient.zip”指的是一个包含命令行界面的Java管理扩展(JMX)客户端工具,这个工具主要用于远程连接并监控Java虚拟机(JVM)以及运行在其中的应用,比如Tomcat服务器。JMX是一种Java平台提供的标准...
9. **JMX管理**:通过Java Management Extensions(JMX),开发者可以远程监控和管理Tomcat的运行状态,如查看线程池状态、内存使用情况等。 10. **性能优化**:优化Tomcat涉及调整线程池大小、缓存设置、减少上...
例如,Java应用服务器如Tomcat和JBoss都利用JMX进行内部监控和管理。开发者也可以使用JMX为自己的应用程序添加管理功能,实现更灵活的运维。 7. 配套源代码的作用: 《JMX技术介绍》的配套源代码提供了实际的编程...
5. 容器初探:Tomcat中的容器主要是指Servlet容器,它负责管理Servlet的生命周期,包括加载、初始化、调用以及销毁。容器设计基于责任链模式,每个容器都按照特定的顺序处理请求。深入研究容器的实现可以帮助我们...
此外,通过JMX(Java Management Extensions)可以监控Tomcat的运行状态,如内存使用、线程池、连接器等。 总结,Apache Tomcat 8.5.16是一个强大且灵活的Java Web服务器,广泛应用于各种规模的项目。了解其安装...
此外,还可以使用JMX(Java Management Extensions)工具远程监控和管理Tomcat实例。 10. **集成开发环境(IDE)支持**: 多数主流的Java IDE,如Eclipse、IntelliJ IDEA等,都支持直接集成Tomcat服务器,方便...
2. **JMX监控**:通过JMX(Java Management Extensions)可以远程监控Tomcat的状态,包括内存、线程、MBean等。 **六、扩展性与社区支持** Tomcat 6.0拥有活跃的开发者社区,提供了大量的扩展插件和第三方模块,如...
5. **启动Tomcat**:调用`tomcat.start()`启动服务器,然后使用`tomcat.getServer().await()`等待服务器停止,通常在应用关闭时调用`tomcat.stop()`。 6. **示例代码**:描述中提到"带例子,简单易懂",可能压缩包...
JMX Proxy Web应用允许通过Web界面访问Tomcat服务器的JMX MBeans,从而实现更深度的监控和控制。 要使用"admin"包,你需要按照以下步骤操作: 1. 下载并解压Apache Tomcat 5.5.17压缩包。 2. 将`$CATALINA_HOME/...
7. **JMX (Java Management Extensions)**:用于监控和管理Tomcat的运行状态。 深入研究Tomcat 5.0.28的源代码,我们可以关注以下几个关键知识点: 1. **生命周期管理**:Catalina组件遵循特定的生命周期管理,...
通过深入理解这些步骤,开发者可以更好地理解Tomcat如何处理请求,以及在遇到问题时定位可能的故障点。此外,优化Tomcat的启动配置,例如调整JVM参数、减少不必要的应用加载,可以显著提高服务器的启动速度和整体...