如何使用tomcat的jmx服务
来源:互联网 发布:member.php 编辑:程序博客网 时间:2024/06/05 07:13
1 基本信息
摘要:本文介绍了如何查看、使用Tomcat的JMX服务,并调用Tomcat的JMX,停止和启动Web应用。
作者:陈光耀
2 正文
Tomcat 5.5.20可以使用JMX服务进行管理操作。下面介绍如何查看Tomcat提供哪些JMX服务,并如何使用这些JMX服务。
1. 使用JDK1.5自带的JConsole程序查看Tomcat的JMX服务
要让JConsole能查看到Tomcat的JMX服务,需要Tomcat启动一个管理口。由于tomcat5.5.20缺省不提供bat启动文件(提供exe启动文件),因此需要自己写一个启动脚本。在tomcat5.5.20/bin目录下建立一个run.bat文件,加入下面内容:
- set CURRENT_DIR=%cd%
- set CATALINA_BASE=%cd ..%
- set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%/conf/logging.properties"
- "D:/jre1.5.0_10/bin/java.exe" %JAVA_OPTS% -Xms256m -Xmx512m -Duser.dir="%CURRENT_DIR%" -jar "D:/JavaEEServer/tomcat/AdminServer/bin/bootstrap.jar" start
运行run.bat启动Tomcat5.5.20。
再运行jdk1.5的jconsole程序
d:/jdk1.5/bin/jconsole 2512 (2512 是tomcat的进程号)
即可进入tomcat的jmx服务的管理界面,可以看到Tomcat提供的所有jmx的mbean service。
2. 在tomcat 的web应用上用jsp查看tomcat的web应用的状态信息
建立一个jmxdemo.jsp文件,如下,部署到webapps的应用目录中。 在浏览器上打入 http://localhost:8080/jmxdemo.jsp, 可以查看所有web应用的状态信息
- <%@page contentType="text/plain;charset=GBK"%>
- <%@page import="java.util.Iterator"%>
- <%@page import="java.util.Set"%>
- <%@page import="javax.management.MBeanServerFactory"%>
- <%@page import="javax.management.MBeanServer"%>
- <%@page import="javax.management.ObjectName"%>
- <%@page import="javax.management.MBeanInfo"%>
- <%@page import="javax.management.MBeanAttributeInfo"%>
- <%
- out.clear();
- MBeanServer mBeanServer = null;
- if (MBeanServerFactory.findMBeanServer(null).size() > 0) {
- mBeanServer = (MBeanServer) MBeanServerFactory.findMBeanServer(
- null).get(0);
- } else {
- mBeanServer = MBeanServerFactory.createMBeanServer();
- }
- Set names = null;
- try {
- names = mBeanServer.queryNames(new ObjectName(
- "*:j2eeType=WebModule,*"), null);
- out.println("OK - Number of results: " + names.size());
- out.println();
- } catch (Exception e) {
- out.println("Error - " + e.toString());
- return;
- }
- Iterator it = names.iterator();
- while (it.hasNext()) {
- ObjectName oname = (ObjectName) it.next();
- out.println("Name: " + oname.toString());
- try {
- MBeanInfo minfo = mBeanServer.getMBeanInfo(oname);
- // can't be null - I thinl
- String code = minfo.getClassName();
- if ("org.apache.commons.modeler.BaseModelMBean"
- .equals(code)) {
- code = (String) mBeanServer.getAttribute(oname,
- "modelerType");
- }
- out.println("modelerType: " + code);
- MBeanAttributeInfo attrs[] = minfo.getAttributes();
- Object value = null;
- for (int i = 0; i < attrs.length; i++) {
- if (!attrs[i].isReadable())
- continue;
- //if( ! isSupported( attrs[i].getType() )) continue;
- String attName = attrs[i].getName();
- if (attName.indexOf("=") >= 0
- || attName.indexOf(":") >= 0
- || attName.indexOf(" ") >= 0) {
- continue;
- }
- try {
- value = mBeanServer.getAttribute(oname, attName);
- } catch (Throwable t) {
- System.out.println("Error getting attribute "
- + oname + " " + attName + " "
- + t.toString());
- continue;
- }
- if (value == null)
- continue;
- if ("modelerType".equals(attName))
- continue;
- String valueString = value.toString();
- //out.println( attName + ": " + escape(valueString));
- out.println(attName + ": " + valueString);
- }
- } catch (Exception e) {
- }
- out.println();
- }
- %>
3. 调用Tomcat的JMX服务,如停止、启动web应用
写一个JavaBean,用来调用Tomcat的JMX服务,关键方法如下:
- public static boolean callWebModuleMBeanMethod(String appName,String methodName) throws Exception{
- MBeanServer mBeanServer = null;
- if (MBeanServerFactory.findMBeanServer(null).size() > 0) {
- mBeanServer = (MBeanServer) MBeanServerFactory.findMBeanServer(
- null).get(0);
- } else {
- throw new Exception("cann't find catalina MBeanServer");
- }
- Set names = null;
- try {
- names = mBeanServer.queryNames(new ObjectName(
- "*:j2eeType=WebModule,name=//localhost/"+appName+",*"), null);
- } catch (Exception e) {
- throw new Exception("cann't find "+appName+ " web moudule mbean! can't undeploy web app./n"+e.getMessage());
- }
- if(names==null || names.size()==0) {
- log.debug("can't find "+appName+ " web moudule mbean!");
- return false;
- }
- ObjectName oname =null;
- Iterator it = names.iterator();
- if (it.hasNext()) {
- oname=(ObjectName) it.next();
- }
- if(oname==null)
- return false;
- try {
- mBeanServer.invoke(oname,methodName,null,null);
- return true;
- } catch (Exception e) {
- throw new Exception("can't "+methodName+" "+appName+ " web application!/n"+e.getMessage());
- }
- }
- public static void main(String[] args){
- callWebModuleMBeanMethod("app1","stop"); //停止web应用app1
- callWebModuleMBeanMethod("app1","start"); //启动web应用app1
- }
- 如何使用tomcat的jmx服务
- (转)使用Tomcat的jmx服务
- 使用JMX监控Tomcat
- 使用JMX监控Tomcat
- 使用JMX监控Tomcat
- 使用JMX监控Tomcat
- zabbix 使用JMX 监控tomcat
- 使用JMX监控Tomcat JVM
- tomcat使用jmx查看web-app的运行情况
- 开启Tomcat的JMX监控
- JMX在Tomcat的应用
- 如何使用JMX监控Kafka
- linux操作系统,tomcat如何开启JMX
- JMX的简单使用
- JMX的使用步骤
- linux下使用JMX监控tomcat
- linux下使用JMX监控tomcat
- Zabbix 使用 JMX 方式监控 Tomcat
- 使用Java异常的几条建议
- MFC中使用OPENGL
- NET开发资源站点和部分秀.NET开源项目
- bash: groupadd: command not found问题
- 领先的一体化呼叫中心交换机
- 如何使用tomcat的jmx服务
- LEFT JOIN/RIGHT JOIN/INNER JOIN的使用
- 自己动手学Remoting(一)
- 企业客服信息化建设----如何建立呼叫中心
- Java专业术语标准化规范。
- linux入门教程(1)---安装方法
- 初学者的第一个JMX应用-HelloJMX
- 再续:802.1x验证
- 写日志