Java Management extentsions(jmx)与tomcat
1,概念:一個可以使用JMX管理器來管理的Java對象稱為JMX管理資源(JMX manageable resource)。事實上,一個JMX管理資源也可以是一個應用程序、一個實現或者一個服務、設備、用戶等等。JMX管理資源用Java寫或者提供一個Java包裝。
要想讓一個Java對象稱為JMX管理資源,必須創建另一個名為Managed Bean或者MBean的對象。org.apache.catalina.mbeans包包括一些MBeans。ConnectorMBean, StandardEngineMBean, StandardHostMBean, StandardContextMBean是Managed Bean的例子。從他們的名字你可以猜到ConnectMBean用于管理連接器,StandardContextMBean用于管理org.apache.catalina.core.StandardContext對象等等。當然,你也可以編寫MBean管理多個Java對象。 MBean將Java對象的屬性和方法暴露給管理應用程序(management application)。管理應用程序本身不能直接訪問Java對象。因此可以選擇任意的屬性和方法讓管理應用程序訪問。
一共有四種MBean:標準standard,動態dynamic, 打開open, 和模型model,從結構上來看,JMX規范分為3層,設備層(instrumentation level),代理層(agent level),和分布服務層(distributed services level)。MBean服務器處于代理層,而MBeans處于設備層。分布服務層將會在JMX規范的未來版本涉及到。
2.標準MBean是最簡單的MBean。要是用標準MBean管理一個Java對象,需要以下工作:
· 創建一個接口,名為你的類名加上后綴MBean。例如,如果要管理的Java類是Car,接口名酒味CarMBean。
· 修改Java類,讓它實現你創建的接口。
· 創建一個代理,該代理必須包括一個MBean服務器。
· 為你的MBean創建一個ObjectName。
· 初始化MBean服務器。
· 向MBean服務器注冊MBean。
package ex20.pyrmont.standardmbeantest;public class Car { private String color = "red"; public String getColor() {return color; } public void setColor(String color) { this.color = color; } public void drive() {System.out.println("Baby you can drive my car.");} } //1: The modified Car classpackage ex20.pyrmont.standardmbeantest; public class Car implements CarMBean {private String color = "red";public String getColor() { return color;} public void setColor(String color) {this.color = color;}
public void drive() { System.out.println("Baby you can drive my car.");} } //2: The CarMBean interface package ex20.pyrmont.standardmbeantest; public interface CarMBean { public String getColor(); public void setColor(String color); public void drive(); } //3: The StandardAgent class package ex20.pyrmont.standardmbeantest; import javax.management.Attribute; import javax.management.ObjectName; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; public class StandardAgent {private MBeanServer mBeanServer = null; public StandardAgent() { mBeanServer = MBeanServerFactory.createMBeanServer(); } public MBeanServer getMBeanServer() { return mBeanServer; } public ObjectName createObjectName(String name) { ObjectName objectName = null; try { objectName = new ObjectName(name);} catch (Exception e) { } return objectName; }private void createStandardBean(ObjectName objectName, String managedResourceClassName) {try { mBeanServer.createMBean(managedResourceClassName, objectName);} catch(Exception e) { }} public static void main(String[] args) {StandardAgent agent = new StandardAgent(); MBeanServer mBeanServer = agent.getMBeanServer();String domain = mBeanServer.getDefaultDomain();String managedResourceClassName = "ex20.pyrmont.standardmbeantest.Car"; ObjectName objectName = agent.createObjectName(domain + ":type=" + managedResourceClassName); agent.createStandardBean(objectName, managedResourceClassName);// manage MBeantry {Attribute colorAttribute = new Attribute("Color","blue"); mBeanServer.setAttribute(objectName, colorAttribute);
System.out.println(mBeanServer.getAttribute(objectName, "Color")); mBeanServer.invoke(objectName,"drive",null,null); } catch (Exception e) {e.printStackTrace(); } } }
如果運行StandardAgent類,會得到以下輸出。
blue
Baby you can drive my car.
?
?
?
?
?
轉載于:https://www.cnblogs.com/davidwang456/p/3253626.html
總結
以上是生活随笔為你收集整理的Java Management extentsions(jmx)与tomcat的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tomcat 容器生命周期lifecyc
- 下一篇: 转载--tomcat整合apr