<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ……天天向上

    好的想法總是無窮無盡

    統(tǒng)計

    留言簿(1)

    閱讀排行榜

    評論排行榜

    TOMCAT獲取信息:JMXServiceURL 、JMXConnector 和MBeanServerConnection

    1. import java.lang.management.MemoryUsage;
    2. import java.text.SimpleDateFormat;
    3. import java.util.Date;
    4. import java.util.Formatter;
    5. import java.util.HashMap;
    6. import java.util.Iterator;
    7. import java.util.Map;
    8. import java.util.Set;
    9. import javax.management.MBeanAttributeInfo;
    10. import javax.management.MBeanInfo;
    11. import javax.management.MBeanServerConnection;
    12. import javax.management.ObjectInstance;
    13. import javax.management.ObjectName;
    14. import javax.management.openmbean.CompositeDataSupport;
    15. import javax.management.remote.JMXConnector;
    16. import javax.management.remote.JMXConnectorFactory;
    17. import javax.management.remote.JMXServiceURL;
    18. public class test {
    19. /**
    20. * @param args
    21. */
    22. public static void main(String[] args) {
    23. try {
    24. String jmxURL = "service:jmx:rmi:///jndi/rmi://192.168.1.126:10090/jmxrmi";//tomcat jmx url
    25. JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);
    26. Map map = new HashMap();
    27. String[] credentials = new String[] { "monitorRole", "QED" };
    28. map.put("jmx.remote.credentials", credentials);
    29. JMXConnector connector = JMXConnectorFactory.connect(serviceURL, map);
    30. MBeanServerConnection mbsc = connector.getMBeanServerConnection();
    31. //端口最好是動態(tài)取得
    32. ObjectName threadObjName = new ObjectName("Catalina:type=ThreadPool,name=http-8089");
    33. MBeanInfo mbInfo = mbsc.getMBeanInfo(threadObjName);
    34. String attrName = "currentThreadCount";//tomcat的線程數(shù)對應(yīng)的屬性值
    35. MBeanAttributeInfo[] mbAttributes = mbInfo.getAttributes();
    36. System.out.println("currentThreadCount:" + mbsc.getAttribute(threadObjName, attrName));
    37. //heap
    38. for (int j = 0; j < mbsc.getDomains().length; j++) {
    39. System.out.println("###########" + mbsc.getDomains()[j]);
    40. }
    41. Set MBeanset = mbsc.queryMBeans(null, null);
    42. System.out.println("MBeanset.size() : " + MBeanset.size());
    43. Iterator MBeansetIterator = MBeanset.iterator();
    44. while (MBeansetIterator.hasNext()) {
    45. ObjectInstance objectInstance = (ObjectInstance) MBeansetIterator.next();
    46. ObjectName objectName = objectInstance.getObjectName();
    47. String canonicalName = objectName.getCanonicalName();
    48. System.out.println("canonicalName : " + canonicalName);
    49. if (canonicalName.equals("Catalina:host=localhost,type=Cluster")) {
    50. // Get details of cluster MBeans
    51. System.out.println("Cluster MBeans Details:");
    52. System.out.println("=========================================");
    53. //getMBeansDetails(canonicalName);
    54. String canonicalKeyPropList = objectName.getCanonicalKeyPropertyListString();
    55. }
    56. }
    57. //------------------------- system ----------------------
    58. ObjectName runtimeObjName = new ObjectName("java.lang:type=Runtime");
    59. System.out.println("廠商:" + (String) mbsc.getAttribute(runtimeObjName, "VmVendor"));
    60. System.out.println("程序:" + (String) mbsc.getAttribute(runtimeObjName, "VmName"));
    61. System.out.println("版本:" + (String) mbsc.getAttribute(runtimeObjName, "VmVersion"));
    62. Date starttime = new Date((Long) mbsc.getAttribute(runtimeObjName, "StartTime"));
    63. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    64. System.out.println("啟動時間:" + df.format(starttime));
    65. Long timespan = (Long) mbsc.getAttribute(runtimeObjName, "Uptime");
    66. System.out.println("連續(xù)工作時間:" + test.formatTimeSpan(timespan));
    67. //------------------------ JVM -------------------------
    68. //堆使用率
    69. ObjectName heapObjName = new ObjectName("java.lang:type=Memory");
    70. MemoryUsage heapMemoryUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(heapObjName,
    71. "HeapMemoryUsage"));
    72. long maxMemory = heapMemoryUsage.getMax();//堆最大
    73. long commitMemory = heapMemoryUsage.getCommitted();//堆當(dāng)前分配
    74. long usedMemory = heapMemoryUsage.getUsed();
    75. System.out.println("heap:" + (double) usedMemory * 100 / commitMemory + "%");//堆使用率
    76. MemoryUsage nonheapMemoryUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(heapObjName,
    77. "NonHeapMemoryUsage"));
    78. long noncommitMemory = nonheapMemoryUsage.getCommitted();
    79. long nonusedMemory = heapMemoryUsage.getUsed();
    80. System.out.println("nonheap:" + (double) nonusedMemory * 100 / noncommitMemory + "%");
    81. ObjectName permObjName = new ObjectName("java.lang:type=MemoryPool,name=Perm Gen");
    82. MemoryUsage permGenUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(permObjName, "Usage"));
    83. long committed = permGenUsage.getCommitted();//持久堆大小
    84. long used = heapMemoryUsage.getUsed();//
    85. System.out.println("perm gen:" + (double) used * 100 / committed + "%");//持久堆使用率
    86. //-------------------- Session ---------------
    87. ObjectName managerObjName = new ObjectName("Catalina:type=Manager,*");
    88. Set<ObjectName> s = mbsc.queryNames(managerObjName, null);
    89. for (ObjectName obj : s) {
    90. System.out.println("應(yīng)用名:" + obj.getKeyProperty("path"));
    91. ObjectName objname = new ObjectName(obj.getCanonicalName());
    92. System.out.println("最大會話數(shù):" + mbsc.getAttribute(objname, "maxActiveSessions"));
    93. System.out.println("會話數(shù):" + mbsc.getAttribute(objname, "activeSessions"));
    94. System.out.println("活動會話數(shù):" + mbsc.getAttribute(objname, "sessionCounter"));
    95. }
    96. //----------------- Thread Pool ----------------
    97. ObjectName threadpoolObjName = new ObjectName("Catalina:type=ThreadPool,*");
    98. Set<ObjectName> s2 = mbsc.queryNames(threadpoolObjName, null);
    99. for (ObjectName obj : s2) {
    100. System.out.println("端口名:" + obj.getKeyProperty("name"));
    101. ObjectName objname = new ObjectName(obj.getCanonicalName());
    102. System.out.println("最大線程數(shù):" + mbsc.getAttribute(objname, "maxThreads"));
    103. System.out.println("當(dāng)前線程數(shù):" + mbsc.getAttribute(objname, "currentThreadCount"));
    104. System.out.println("繁忙線程數(shù):" + mbsc.getAttribute(objname, "currentThreadsBusy"));
    105. }
    106. } catch (Exception e) {
    107. e.printStackTrace();
    108. }
    109. }
    110. public static String formatTimeSpan(long span) {
    111. long minseconds = span % 1000;
    112. span = span / 1000;
    113. long seconds = span % 60;
    114. span = span / 60;
    115. long mins = span % 60;
    116. span = span / 60;
    117. long hours = span % 24;
    118. span = span / 24;
    119. long days = span;
    120. return (new Formatter()).format("%1$d天 %2$02d:%3$02d:%4$02d.%5$03d", days, hours, mins, seconds, minseconds)
    121. .toString();
    122. }
    123. }

    1. import java.util.Iterator;
    2. import java.util.Set;
    3. import javax.management.Attribute;
    4. import javax.management.MBeanInfo;
    5. import javax.management.MBeanServerConnection;
    6. import javax.management.MBeanServerInvocationHandler;
    7. import javax.management.ObjectInstance;
    8. import javax.management.ObjectName;
    9. import javax.management.remote.JMXConnector;
    10. import javax.management.remote.JMXConnectorFactory;
    11. import javax.management.remote.JMXServiceURL;
    12. public class Client {
    13. public static void main(String[] args) throws Exception {
    14. JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
    15. JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
    16. MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
    17. ObjectName mbeanName = new ObjectName("chengang:name=HelloWorld");
    18. // 把所有Domain都打印出來
    19. System.out.println("Domains:---------------");
    20. String domains[] = mbsc.getDomains();
    21. for (int i = 0; i < domains.length; i++) {
    22. System.out.println("\tDomain[" + i + "] = " + domains[i]);
    23. }
    24. // MBean的總數(shù)
    25. System.out.println("MBean count = " + mbsc.getMBeanCount());
    26. // 對name屬性的操作(屬性名的第一個字母要大寫)
    27. mbsc.setAttribute(mbeanName, new Attribute("Name", "PANDA"));// 設(shè)值
    28. System.out.println("Name = " + mbsc.getAttribute(mbeanName, "Name"));// 取值
    29. // 得到proxy代理后直接調(diào)用的方式
    30. HelloMBean proxy = (HelloMBean) MBeanServerInvocationHandler.newProxyInstance(mbsc, mbeanName, HelloMBean.class, false);
    31. proxy.printHello();
    32. proxy.printHello("Raymend");
    33. // 遠程調(diào)用的方式
    34. mbsc.invoke(mbeanName, "printHello", null, null);
    35. mbsc.invoke(mbeanName, "printHello", new Object[] { "熊貓燒香" }, new String[] { String.class.getName() });
    36. // 得mbean的信息
    37. MBeanInfo info = mbsc.getMBeanInfo(mbeanName);
    38. System.out.println("Hello Class: " + info.getClassName());
    39. System.out.println("Hello Attriber:" + info.getAttributes()[0].getName());
    40. System.out.println("Hello Operation:" + info.getOperations()[0].getName());
    41. // 得到所有的MBean的ObjectName
    42. System.out.println("all ObjectName:---------------");
    43. Set set = mbsc.queryMBeans(null, null);
    44. for (Iterator it = set.iterator(); it.hasNext();) {
    45. ObjectInstance oi = (ObjectInstance) it.next();
    46. System.out.println("\t" + oi.getObjectName());
    47. }
    48. // 關(guān)閉MBeanServer連接
    49. jmxc.close();
    50. }
    51. }

    posted on 2012-09-05 14:14 japper 閱讀(4990) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 成视频年人黄网站免费视频| 久久国产精品免费一区二区三区| 亚洲午夜免费视频| 亚洲第一AV网站| 曰批全过程免费视频在线观看无码| 日韩精品亚洲aⅴ在线影院| 野花视频在线官网免费1| 亚洲AV中文无码乱人伦| 精品多毛少妇人妻AV免费久久| 亚洲国产精品一区二区第四页| 黄色一级毛片免费| 狠狠亚洲婷婷综合色香五月排名| a级毛片免费全部播放无码| 亚洲国产精品一区二区第一页| 97视频免费观看2区| 亚洲av无码久久忘忧草| 99久久免费精品国产72精品九九| 亚洲av无码日韩av无码网站冲 | 看亚洲a级一级毛片| 亚洲电影日韩精品| 四虎国产精品免费永久在线| 亚洲国产精品综合久久久| 97无码免费人妻超级碰碰碰碰| 国产偷国产偷亚洲高清人| 亚洲熟妇无码AV在线播放| 在线免费中文字幕| 久久精品亚洲日本波多野结衣| 中文字幕亚洲无线码| 精品无码人妻一区二区免费蜜桃| 亚洲男人天堂2022| 久久久精品国产亚洲成人满18免费网站| 成人妇女免费播放久久久| 国产精品亚洲综合五月天| 亚洲福利在线播放| 91福利视频免费| 国产亚洲蜜芽精品久久| 亚洲爱情岛论坛永久| 天天操夜夜操免费视频| 人妻免费一区二区三区最新| 亚洲国产精品日韩在线观看| 亚洲A∨午夜成人片精品网站|