Home » Enterprise Java » jmx » Create and register MBean in MBeanServer

About Byron Kiourtzoglou

Byron Kiourtzoglou
Byron is a master software engineer working in the IT and Telecom domains. He is an applications developer in a wide variety of applications/services. He is currently acting as the team leader and technical architect for a proprietary service creation and integration platform for both the IT and Telecom industries in addition to a in-house big data real-time analytics solution. He is always fascinated by SOA, middleware services and mobile development. Byron is co-founder and Executive Editor at Java Code Geeks.

Create and register MBean in MBeanServer

In this example we shall show you how to create and register an MBean in MBeanServer. An MBean is a managed Java object, similar to a JavaBeans component, that follows the design patterns set forth in the JMX specification. An MBean can represent a device, an application, or any resource that needs to be managed. MBeans expose a management interface that consists of a set of readable or writable attributes, or both, a set of invokable operations and a self-description. To create and register an MBean in MBeanServer one should perform the following steps:

  • Create a Java interface. Here we create HelloBean. Every method in the interface defines either an attribute or an operation in the MBean. The interface has a method, sayHello() a read-write attribute called message of type String.
  • Create a Java class, Hello in the example, that implements that interface
  • Create an MBeanServer that is the interface for MBean manipulation on the agent side. Use getPlatformMBeanServer() API method of ManagementFactory.
  • Define the object name for the MBean. The object name is an instance of the JMX class ObjectName and must contain a domain and a list of key-properties.
  • Create a new instance of the MBean and register it to MBeanServer, using registerMBean(Object object, ObjectName name) API method of MBeanServer.
  • Use queryMBeans(ObjectName name, QueryExp query) API method of MBeanServer with the given ObjectName to get all ObjectInstances of the specified MBean.
  • Get the first ObjectInstance name and class,

as described in the code snippet below.  

package com.javacodegeeks.snippets.enterprise;

import java.lang.management.ManagementFactory;
import java.util.Set;

import javax.management.MBeanServer;
import javax.management.ObjectInstance;
import javax.management.ObjectName;

public class CreateAndRegisterMBeanInMBeanServer {

	public static void main(String[] args) throws Exception {
		
		String objectName = "com.javacodegeeks.snippets.enterprise:type=Hello";
		
		MBeanServer server = ManagementFactory.getPlatformMBeanServer();

	    // Construct the ObjectName for the Hello MBean we will register
	    ObjectName mbeanName = new ObjectName(objectName);
	    
	    Hello mbean = new Hello();
	    
	    server.registerMBean(mbean, mbeanName);
	    
	    Set<ObjectInstance> instances = server.queryMBeans(new ObjectName(objectName), null);
	    
	    ObjectInstance instance = (ObjectInstance) instances.toArray()[0];
	    
	    System.out.println("Class Name:t" + instance.getClassName());
	    System.out.println("Object Name:t" + instance.getObjectName());
		
	}
	
	static class Hello implements HelloMBean {
		
		private String message = "Hello World";

		@Override
		public String getMessage() {
			return this.message;
		}

		@Override
		public void sayHello() {
			System.out.println(message);
		}

		@Override
		public void setMessage(String message) {
			this.message = message;
		}
		
	}
	
	static interface HelloMBean {
		
		// operations
		
		public void sayHello();

		// attributes
		
		// a read-write attribute called Message of type String
		public String getMessage();
		public void setMessage(String message);
		
	}
	
}

Output:

Class Name:	com.javacodegeeks.snippets.enterprise.CreateAndRegisterMBeanInMBeanServer$Hello
Object Name:	com.javacodegeeks.snippets.enterprise:type=Hello

  
This was an example of how to create and register an MBean in MBeanServer.

(No Ratings Yet)
Start the discussion Views Tweet it!

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!

 

1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design

 

and many more ....

 

Receive Java & Developer job alerts in your Area

 

Leave a Reply

avatar
  Subscribe  
Notify of