CollTongweb.java 4.05 KB
package com.sitech.ismp.coll.middleware.tongweb.impl;

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Set;

import javax.management.MBeanServerConnection;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.management.QueryExp;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

public class CollTongweb {

	HashMap<String, String[]> environmentMap = null;
	private MBeanServerConnection mbeanServerConn = null;
	JMXConnector JMXConn = null;

	public MBeanServerConnection getMbeanServerConn() {
		return mbeanServerConn;
	}

	public void init(HashMap params) {
		String user = params.get("USER").toString();
		String passwd = params.get("PASSWORD").toString();
		String jmx_url = params.get("JMX_URL").toString();
		params.put(JMXConnector.CREDENTIALS, new String[]{user,passwd});
		String jmxurl = params.get("JMX_URL").toString();
		
		
		Hashtable ht = new Hashtable();
		ht.put(JMXConnector.CREDENTIALS, new String[]{user,passwd});
		ht.put("JMX_URL", jmx_url);
		ht.put("USER", user);
		ht.put("PASSWORD", passwd);
		
		try {
			JMXServiceURL serverURL = new JMXServiceURL(jmxurl);
			try {

				if (this.environmentMap != null) {
					JMXConn = JMXConnectorFactory.connect(serverURL, this.environmentMap);
				} else {
					JMXConn = JMXConnectorFactory.connect(serverURL, ht);
				}
				mbeanServerConn = JMXConn.getMBeanServerConnection();

			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}
	
	protected String getCollInfo(ObjectName obj,String type) {
		try {
			String o = mbeanServerConn.getAttribute(obj, type).toString();
			System.out.println("o="+o);	
			return o;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	protected Object execute(String objName, String attribute) {
		Object value = "";
		try {
			ObjectName exeObjName = new ObjectName(objName);
			value = this.getMbeanServerConn().getAttribute(exeObjName, attribute);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return value;
	}
	
	protected HashMap<String, Object> executeAttributeArray(String objName, String[] attributes) {
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		try {
			ObjectName exeObjName = new ObjectName(objName);
			for (String attr : attributes) {
				Object value = this.getMbeanServerConn().getAttribute(exeObjName, attr);
				resultMap.put(attr, value);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return resultMap;
	}
	


	protected List<HashMap<String, Object>> executQueryNames(String objName, String args[]) {
		List<HashMap<String, Object>> exeResult = new ArrayList<HashMap<String, Object>>();
		try {
			ObjectName objectName = new ObjectName(objName);
			Set<ObjectName> namesSet = this.getMbeanServerConn().queryNames(objectName, null);
			for (ObjectName obj : namesSet) {
				String name = obj.getKeyProperty("name");
				ObjectName objname = new ObjectName(obj.getCanonicalName());
				if (name != null) {
					HashMap<String, Object> resultMap = new HashMap<String, Object>();
					resultMap.put("name", name);
					for (String param : args) {
						Object value = this.getMbeanServerConn().getAttribute(objname, param);
						resultMap.put(param, value != null ? value : "0");
					}
					exeResult.add(resultMap);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return exeResult;
	}

	@SuppressWarnings("unchecked")
	protected Set<ObjectInstance> executeQueryMbeans(String objName, QueryExp exp) {
		Set<ObjectInstance> managerSet = null;
		try {
			ObjectName managerObjName = new ObjectName(objName);
			managerSet = this.getMbeanServerConn().queryMBeans(managerObjName, exp);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return managerSet;
	}

	protected void release() {
		try {
			this.JMXConn.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}