日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

使用JMX監(jiān)控Tomcat示例代碼

瀏覽:507日期:2023-06-12 15:17:15
目錄
  • 示例代碼
  • 完整的示例代碼文件

示例代碼

String jmxURL = "service:jmx:rmi:///jndi/rmi://192.168.10.93:8999/jmxrmi";
JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);

Map map = new HashMap();
// 用戶名密碼,在jmxremote.password文件中查看
String[] credentials = new String[] { "monitorRole", "tomcat" };
map.put("jmx.remote.credentials", credentials);
JMXConnector connector = JMXConnectorFactory.connect(serviceURL, map);
MBeanServerConnection mbsc = connector.getMBeanServerConnection();

// 端口最好是動(dòng)態(tài)取得
ObjectName threadObjName = new ObjectName("Catalina:type=ThreadPool,name=http-8080");
MBeanInfo mbInfo = mbsc.getMBeanInfo(threadObjName);

// tomcat的線程數(shù)對(duì)應(yīng)的屬性值
String attrName = "currentThreadCount";
MBeanAttributeInfo[] mbAttributes = mbInfo.getAttributes();
System.out.println("currentThreadCount:" + mbsc.getAttribute(threadObjName, attrName));

完整的示例代碼文件

import java.lang.management.MemoryUsage;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
import javax.management.MBeanServerConnection;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
/**
 * @author liuyazhuang
 * @date 2016-05-31 
 */
public class JMXTest {

    /**
     * main方法
     * @param args
     */
    public static void main(String[] args) {
try {

    String jmxURL = "service:jmx:rmi:///jndi/rmi://127.0.0.1:8999/jmxrmi";

    JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);

    Map map = new HashMap();
    String[] credentials = new String[] { "monitorRole", "tomcat" };
    map.put("jmx.remote.credentials", credentials);
    JMXConnector connector = JMXConnectorFactory.connect(serviceURL,
    map);
    MBeanServerConnection mbsc = connector.getMBeanServerConnection();

    // 端口最好是動(dòng)態(tài)取得
    ObjectName threadObjName = new ObjectName(
    "Catalina:type=ThreadPool,name=http-8080");
    MBeanInfo mbInfo = mbsc.getMBeanInfo(threadObjName);

    String attrName = "currentThreadCount";// tomcat的線程數(shù)對(duì)應(yīng)的屬性值
    MBeanAttributeInfo[] mbAttributes = mbInfo.getAttributes();
    System.out.println("currentThreadCount:"
    + mbsc.getAttribute(threadObjName, attrName));

    // heap
    for (int j = 0; j < mbsc.getDomains().length; j++) {
System.out.println("###########" + mbsc.getDomains()[j]);
    }
    Set MBeanset = mbsc.queryMBeans(null, null);
    System.out.println("MBeanset.size() : " + MBeanset.size());
    Iterator MBeansetIterator = MBeanset.iterator();
    while (MBeansetIterator.hasNext()) {
ObjectInstance objectInstance = (ObjectInstance) MBeansetIterator
.next();
ObjectName objectName = objectInstance.getObjectName();
String canonicalName = objectName.getCanonicalName();
System.out.println("canonicalName : " + canonicalName);
if (canonicalName
.equals("Catalina:host=localhost,type=Cluster")) {
    // Get details of cluster MBeans
    System.out.println("Cluster MBeans Details:");
    System.out
    .println("=========================================");
    // getMBeansDetails(canonicalName);
    String canonicalKeyPropList = objectName
    .getCanonicalKeyPropertyListString();
}
    }
    // ------------------------- system ----------------------
    ObjectName runtimeObjName = new ObjectName("java.lang:type=Runtime");
    System.out.println("廠商:"
    + (String) mbsc.getAttribute(runtimeObjName, "VmVendor"));
    System.out.println("程序:"
    + (String) mbsc.getAttribute(runtimeObjName, "VmName"));
    System.out.println("版本:"
    + (String) mbsc.getAttribute(runtimeObjName, "VmVersion"));
    Date starttime = new Date((Long) mbsc.getAttribute(runtimeObjName,
    "StartTime"));
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println("啟動(dòng)時(shí)間:" + df.format(starttime));

    Long timespan = (Long) mbsc.getAttribute(runtimeObjName, "Uptime");
    System.out.println("連續(xù)工作時(shí)間:" + JMXTest.formatTimeSpan(timespan));
    // ------------------------ 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();// 堆當(dāng)前分配
    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("應(yīng)用名:" + obj.getKeyProperty("path"));
ObjectName objname = new ObjectName(obj.getCanonicalName());
System.out.println("最大會(huì)話數(shù):"
+ mbsc.getAttribute(objname, "maxActiveSessions"));
System.out.println("會(huì)話數(shù):"
+ mbsc.getAttribute(objname, "activeSessions"));
System.out.println("活動(dòng)會(huì)話數(shù):"
+ 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("最大線程數(shù):"
+ mbsc.getAttribute(objname, "maxThreads"));
System.out.println("當(dāng)前線程數(shù):"
+ mbsc.getAttribute(objname, "currentThreadCount"));
System.out.println("繁忙線程數(shù):"
+ mbsc.getAttribute(objname, "currentThreadsBusy"));
    }

} catch (Exception e) {
    e.printStackTrace();
}
    }

    public static String formatTimeSpan(long span) {
long minseconds = span % 1000;

span = span / 1000;
long seconds = span % 60;

span = span / 60;
long mins = span % 60;

span = span / 60;
long hours = span % 24;

span = span / 24;
long days = span;
return (new Formatter()).format("%1$d天 %2$02d:%3$02d:%4$02d.%5$03d",
days, hours, mins, seconds, minseconds).toString();
    }
}

到此這篇關(guān)于使用JMX監(jiān)控Tomcat示例代碼的文章就介紹到這了,更多相關(guān)JMX監(jiān)控Tomcat內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: Tomcat
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩一级欧洲| 欧美成a人片免费观看久久五月天| 日韩精品久久久久久久软件91| 91精品福利| 亚洲综合电影一区二区三区| 中文字幕一区二区三区在线视频| 日韩精品第二页| 国产精品一线| 高清不卡亚洲| 国产白浆在线免费观看| 播放一区二区| 在线综合亚洲| 亚洲精品少妇| 丰满少妇一区| 国产亚洲精品v| 日本不卡一二三区黄网| 精品理论电影在线| 日韩一级网站| 日本不卡视频一二三区| 精品国产乱码久久久| 午夜电影亚洲| 青青草91视频| 国产精品久久久一区二区| 91嫩草亚洲精品| 黄色精品网站| 国产精品极品国产中出| 久久亚洲专区| 日韩精品亚洲一区二区三区免费| 精品欧美日韩精品| 视频一区视频二区中文字幕| 久久免费精品| 免费不卡在线视频| 精品视频一二| 美女国产精品| 国产aⅴ精品一区二区四区| 伊人成人在线视频| 国产精品一区亚洲| 欧美在线影院| 久久99国产精品视频| 免费一二一二在线视频| 中文无码久久精品| 国产在线观看www| 亚洲精品免费观看| 在线中文字幕播放| 天堂成人免费av电影一区| 国产一区二区三区网| 91久久视频| 大香伊人久久精品一区二区| 亚洲影视一区| 性欧美videohd高精| 日本强好片久久久久久aaa| 成人自拍av| 麻豆一区在线| 综合一区av| 亚洲91视频| 欧美激情日韩| 日韩久久一区二区三区| 综合视频一区| 免费毛片在线不卡| 亚洲不卡系列| 欧美羞羞视频| 久久69成人| 国产精选久久| 综合五月婷婷| 欧美日韩三区| 日本久久成人网| 你懂的网址国产 欧美| 欧美不卡高清| 亚洲欧美在线专区| 国产日韩高清一区二区三区在线| 桃色一区二区| 91精品国产经典在线观看| 久久蜜桃精品| 国产精品二区影院| 中文亚洲免费| 国产精品视频一区二区三区四蜜臂| 久久精品卡一| 亚洲一区av| 免费视频久久| 婷婷精品视频| 日韩在线短视频| 国产高潮在线| 国产精品久久观看| 国产一区二区三区黄网站| 国产在线|日韩| 成人亚洲一区二区| 青青青免费在线视频| 久久精品亚洲人成影院| 欧美日韩尤物久久| 午夜国产精品视频| 亚洲永久字幕| 99热国内精品| 亚洲欧洲另类| 中文在线免费视频| 久久婷婷丁香| 午夜在线精品偷拍| 日韩有吗在线观看| 欧美黄色一区二区| 亚洲黄色免费av| 成人台湾亚洲精品一区二区| 麻豆成全视频免费观看在线看| 桃色一区二区| 久久久久久久久99精品大| 婷婷色综合网| 婷婷亚洲精品| 国产精品a级| 日韩欧美一区二区三区免费看| 亚洲特色特黄| 在线观看一区| 久久这里只有| 日韩免费福利视频| 国产精品外国| 日韩国产欧美三级| 久久不见久久见免费视频7| 久久久国产精品网站| 国产精品成人a在线观看| 欧美日韩国产探花| 亚洲欧洲专区| 国产一区一一区高清不卡| 久久亚洲国产| 欧美日韩四区| 国产精品天堂蜜av在线播放| 日韩精品1区| 免播放器亚洲| 久久久久久亚洲精品美女| 黑丝美女一区二区| 人人爱人人干婷婷丁香亚洲| 日韩在线欧美| 日本电影久久久| 亚洲永久av| 男女精品网站| 久久中文字幕一区二区三区| 四季av一区二区凹凸精品| aa国产精品| 日韩av中文字幕一区| 91视频久久| 亚洲深深色噜噜狠狠爱网站 | 日韩深夜视频| 亚洲人妖在线| 伊人久久亚洲影院| 一区二区三区国产盗摄| 国产欧美一区二区精品久久久| 久久超碰99| se01亚洲视频| 美女亚洲一区| 亚洲深夜福利在线观看| 中文在线资源| 在线国产一区二区| 一区二区三区国产盗摄| 日韩精品第一| 国产日韩在线观看视频| 在线看片一区| 91亚洲成人| 亚洲一区欧美激情| 伊人精品一区| 日韩精品中文字幕吗一区二区 | 日韩欧美2区| 国产日韩一区二区三免费高清| 九九99久久精品在免费线bt| 久久九九电影| 中文字幕一区二区精品区| 麻豆精品在线| 久久最新视频| 久久99精品久久久久久园产越南 | 欧美一区免费| 亚洲精品在线二区| 精品一区二区三区亚洲| 精品视频自拍| 欧美中文一区二区| 欧美日韩精品免费观看视频完整| 国产精品普通话对白| 午夜电影一区| 成人午夜在线| 久久国产影院| 日韩一二三区在线观看| 国产精品国码视频| 国产亚洲综合精品| 日本亚州欧洲精品不卡| 福利在线免费视频| 日韩va欧美va亚洲va久久| 亚洲综合电影| 免费看欧美美女黄的网站| а√天堂8资源中文在线| 亚洲精品字幕| 久久久久免费av| 国产精品中文| 欧美日韩四区| 国产成人在线中文字幕| 日韩一区二区三区高清在线观看| 91精品国产调教在线观看| 欧美一区影院| 国产精品97| 美女国产一区二区三区| 另类亚洲自拍| 日本精品影院| 久草精品视频| 91成人在线网站| 国产亚洲激情| 国产成人精品一区二区三区免费 | 蜜臀av在线播放一区二区三区|