⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mbeanutil.java

📁 Xfire文件 用于开发web service 的一个开源工具 很好用的
💻 JAVA
字号:
package org.codehaus.xfire.management.mbeans;

import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.util.Hashtable;

import javax.management.Attribute;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanException;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import javax.management.ReflectionException;
import javax.management.monitor.CounterMonitor;
import javax.management.monitor.GaugeMonitor;
import javax.management.remote.JMXConnectorServer;
import javax.management.remote.JMXConnectorServerFactory;
import javax.management.remote.JMXServiceURL;

import org.codehaus.xfire.management.mbeans.listeners.CounterListener;
import org.codehaus.xfire.management.mbeans.listeners.GaugeListener;



public class MBeanUtil {

	JMXConnectorServer jmxConnectorServer = null;
	JMXConnectorServer cs=null;
	MBeanServer mbs = null;
	Hashtable objectNames = new Hashtable();
	public MBeanUtil() {
		super();
		// TODO Auto-generated constructor stub
	}
	public MBeanServer createMBeanServer(){
        try {
            System.out.println("Creating the MBean server");
            mbs = ManagementFactory.getPlatformMBeanServer();
			System.out.println("Done creating the MBean server");
        }catch(Exception ex){
			ex.printStackTrace();
		}
		return mbs;
	}
	
	public MBeanServer createRemoteMBeanServer(String host,int port) throws Exception{
		mbs = MBeanServerFactory.createMBeanServer();
		JMXServiceURL url = new JMXServiceURL(
	      "service:jmx:rmi:///jndi/rmi://"+host+":"+port+"/XFireMbeanServer");
		cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
		cs.start();
		return mbs;
	}
	public void tearDown() throws IOException{
		cs.stop();
	}

	public void createServiceMBean(String serviceName){
		ServiceStat service = new ServiceStat();

		try {
			ObjectName objectName = new ObjectName("XFire:name="+serviceName+",type=management");
			objectNames.put(serviceName,objectName);
			mbs.registerMBean(service, objectName);
			createCounterMonitor(objectName,serviceName,new Long(500),new Long(200));
			createGaugeMonitor(objectName,serviceName,new Long(500),new Long(200),new Long(100));
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	public void createCounterMonitor(ObjectName objectName,String serviceName,Long monitoringFrequency,Long threshold){
		CounterMonitor cm = new CounterMonitor();
		cm.addObservedObject(objectName);
		cm.setObservedAttribute("TotalRequestCount");
		cm.setGranularityPeriod(monitoringFrequency);
		cm.setNotify(true);
		cm.setInitThreshold(new Long(threshold));
		cm.setDifferenceMode(true);
		cm.setNotify(true);
		cm.addNotificationListener(new CounterListener(),null,null);
		try {
			ObjectName objectNameC = new ObjectName("XFire:name="+serviceName+"CounterMonitor,"+"type=management");
			cm.start();
			mbs.registerMBean(cm, objectNameC);
		
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	public void createGaugeMonitor(ObjectName objectName,String serviceName,Long monitoringFrequency,Long thresholdHigh,Long thresholdLow){
		GaugeMonitor gm = new GaugeMonitor();
		gm.addObservedObject(objectName);
		gm.setObservedAttribute("LastResponseTime");
		gm.setGranularityPeriod(monitoringFrequency);
		gm.setNotifyHigh(true);
		gm.setNotifyLow(true);
		gm.setThresholds(thresholdHigh,thresholdLow);
		gm.setDifferenceMode(true);
		gm.addNotificationListener(new GaugeListener(),null,null);
		try {
			ObjectName objectNameG = new ObjectName("XFire:name="+serviceName+"GaugeMonitor,"+"type=management");
			gm.start();	
			mbs.registerMBean(gm, objectNameG);
		
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public MBeanServer getMBeanServer(){
		return mbs;
	}
	
	public void recordFailedRequest(String serviceName){
		ObjectName objName = (ObjectName)objectNames.get(serviceName);
		try {
			mbs.invoke(objName,"setFailedRequestCount",null,null);
		} catch (InstanceNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MBeanException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ReflectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public void recordSuccessfulRequest(String serviceName){
		
		ObjectName objName = (ObjectName)objectNames.get(serviceName);
		try {
			mbs.invoke(objName,"setSuccessfulRequestCount",null,null);
		} catch (InstanceNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MBeanException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ReflectionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public void setLastResponseTime(String serviceName,Long arg){
		ObjectName objName = (ObjectName)objectNames.get(serviceName);
		Attribute attrib = new Attribute("LastResponseTime",arg);
		try {
			mbs.setAttribute(objName,attrib);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}
	public static void main(String args[]){
		try {
			MBeanUtil mu = new MBeanUtil();
			MBeanServer mbs = mu.createRemoteMBeanServer("localhost",9999);
			mu.createServiceMBean("Contract");
			System.out.println("Server is up and Running press any key to exit");
			mu.recordFailedRequest("Contract");
			mu.recordSuccessfulRequest("Contract");
			mu.setLastResponseTime("Contract",new Long(300));
			System.in.read();
			mu.tearDown();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
		

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -