IBM Tivoli Composite Application Agent for J2EE, Version 7.1.1

J2SE JMX plug-in sample

package com.testware.standalone.jmx;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties; 
import javax.management.AttributeNotFoundException;
import javax.management.MBeanServer;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.QueryExp;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL; 
import com.ibm.tivoli.itcam.j2se.jmxe.JMXEnginePlugin;

public class CustomJMXEngine implements JMXEnginePlugin {
	private String hostip = "";
	private int port = 0;
	private String username = "";
	private String password = "";
	MBeanServerConnection mbsc = null;
	/**
	 * @param prop All variables about jmx will be set into this properties. 
     Such as host, port, username and password
	 */
	public void initialize(Properties prop) throws Exception {
		this.hostip = prop.getProperty(HOST,"127.0.0.1");
		String port_s = prop.getProperty(PORT);
		try {
			this.port = Integer.parseInt(port_s);
		} catch (NumberFormatException e) {
			this.port = 0;
		}
		this.username = prop.getProperty(USERNAME);
		this.password = prop.getProperty(PASSWORD);
		
		if(mbsc == null)
		{
			MBeanUtils.getInstance().createMBeanServer();
			mbsc = this.getMBeanServerConnection();
		}
	}
	private MBeanServerConnection getMBeanServerConnection() throws Exception {
		// Get MBeanServerConnection
		MBeanServerConnection connection;
		try {
			// The address of the connector server
			JMXServiceURL url = new JMXServiceURL("rmi", this.hostip, this.port, 
"/jndi/jmx");

			// The credentials are passed via the environment Map
			Map environment = new HashMap();
			String[] credentials = new String[]{this.username, this.password};
			environment.put(JMXConnector.CREDENTIALS, credentials);

			// Connect to the server
			JMXConnector cntor = JMXConnectorFactory.connect(url, environment);

			connection = cntor.getMBeanServerConnection();
		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}
		return connection;
	}
	/**
	 * Framwork use this method to get customer's mbean server and register 
some mbeans into it
	 */
	public MBeanServer getRegistrationMBeanServer() {
		MBeanServer server = MBeanUtils.getInstance().getMBeanServer();
		return server;
	}
	/**
	 * Proxy function to invoke method of MBean Object.
	 */
	public Object invoke(Object proxy, Method method, Object[] args) throws 
Throwable {
		Object returnValue = null;

		try {
			if (method.getName().equals("getDefaultDomain")) {
				returnValue = mbsc.getDefaultDomain();
			} else if (method.getName().equals("queryNames")) {
				returnValue = mbsc.queryNames((ObjectName) args[0],(QueryExp) args[1]);
			} else if (method.getName().equals("getAttribute")) {
				returnValue = mbsc.getAttribute((ObjectName) args[0],(String) args[1]);
			} else if (method.getName().equals("invoke")) {
				returnValue = mbsc.invoke((ObjectName) args[0],(String) args[1], 
(Object[]) args[2],(String[]) args[3]);
			} else if (method.getName().equals("getMBeanInfo")) {
				returnValue = mbsc.getMBeanInfo((ObjectName) args[0]);
			} else if (method.getName().equals("getAttributes")) {
				returnValue = mbsc.getAttributes((ObjectName) args[0],(String[]) args[1]);
			} else {
				 throw new Exception(method.getName()
				 + " IS NOT IMPLEMENTED OR IS UNKNOWN");
			}
		}catch (AttributeNotFoundException e) { //ignore all attribute not found 
excpetion.
		}catch (Exception re) {
			re.printStackTrace();
		}
		return returnValue;
	}
	public String buildObjectNameString(String domainName, String type, String name, 
Properties extraProperties) {
		return null;
	}
}


Feedback