Tomcat 配置 JMX

 

设置密码文件非常重要,特别是在多用户的环境下。我按以下步骤在jdk 1.5.0_08jrelibmanagement目录下建立密码文件:

---用密码模板文件(文件名jmxremote.password.template)拷贝出一个名为jmxremote.password的新文件

---将密码文件的文件权限设置为只有你能读写

---为角色设置密码,如monitorRole 和controlRole

---当启动JVM时系统属性已经设置成表2的样子

 

为了能够在启动Tomcat服务器时启用远程JMX监测,要对位于CATALINA_HOME/bin目录下的 Tomcat启动脚本(catalina.bat 或catalina.sh)做如下修改:

catalina.sh中找到 # ----- Execute The Requested Command -----------------------------------------

添加如下代码:

CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=8901

      -Dcom.sun.management.jmxremote.ssl=false

     -Dcom.sun.management.jmxremote.authenticate=true

    -Dcom.sun.management.jmxremote.password.file=jmxremote.password

    -Dcom.sun.management.jmxremote.access.file=jmxremote.access

    -Djava.rmi.server.hostname=172.16.41.89"

 

在bin文件夹中加入jmxremote.password和jmxremote.access

jmxremote.access:

admin readwrite

monitor readonly

jmxremote.password:

admin test

monitor test

两文件的权限为400

 

Jmanager上的url地址配置

service:jmx:rmi:///jndi/rmi://localhost:8901/jmxrmi

复制catalina.sh成jmxcatalina.sh

把startup.sh中catalina.sh换成jmxcatalina.sh

实际上来说我们可以用jmx来监控一些java应用的运行情况,还有自己写的一些服务类的应用。

以下是我们用来做监控的jmx源代码

 

package com.shine.framework.Jmx;  
  
import java.util.HashMap;  
import java.util.Map;  
  
import javax.management.MBeanServerConnection;  
import javax.management.ObjectName;  
import javax.management.remote.JMXConnector;  
import javax.management.remote.JMXConnectorFactory;  
import javax.management.remote.JMXServiceURL;  
  
public class JMXManager {  
    /** 
     * 建立连接 
     *  
     * @param ip 
     * @param jmxport 
     * @return 
     */  
    public static MBeanServerConnection createMBeanServer(String ip,  
            String jmxport, String userName, String password) {  
        try {  
            String jmxURL = "service:jmx:rmi:///jndi/rmi://" + ip + ":"  
                    + jmxport + "/jmxrmi";  
            // jmx  
            // url  
            JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);  
  
            Map map = new HashMap();  
            String[] credentials = new String[] { userName, password };  
            map.put("jmx.remote.credentials", credentials);  
            JMXConnector connector = JMXConnectorFactory.connect(serviceURL,  
                    map);  
            MBeanServerConnection mbsc = connector.getMBeanServerConnection();  
            return mbsc;  
  
        } catch (Exception e) {  
            // e.printStackTrace();  
            System.err.println(ip + "的中间件不可以达");  
        }  
        return null;  
    }  
  
    /** 
     * 获取所有属性 
     *  
     * @param mbeanServer 
     * @param objName 
     * @return 
     */  
    public static Map getAllAttribute(MBeanServerConnection mbeanServer,  
            ObjectName objName) {  
        if (mbeanServer == null || objName == null)  
            throw new IllegalArgumentException();  
        try {  
            return null;  
        } catch (Exception e) {  
            return null;  
        }  
    }  
  
    /** 
     * 使用MBeanServer获取对象名为[objName]的MBean的[objAttr]属性值 
     * <p> 
     * 静态代码: return MBeanServer.getAttribute(ObjectName name, String attribute) 
     *  
     * @param mbeanServer 
     *            - MBeanServer实例 
     * @param objName 
     *            - MBean的对象名 
     * @param objAttr 
     *            - MBean的某个属性名 
     * @return 属性值 
     */  
    private static Object getAttribute(MBeanServerConnection mbeanServer,  
            ObjectName objName, String objAttr) {  
        if (mbeanServer == null || objName == null || objAttr == null)  
            throw new IllegalArgumentException();  
        try {  
            return String.valueOf(mbeanServer.getAttribute(objName,  
                    "currentThreadsBusy"));  
        } catch (Exception e) {  
            return null;  
        }  
    }  
  
}

 

 

转载于:https://my.oschina.net/manmao/blog/637930

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值