Java / JMX
The Java Management Extensions (JMX) technology is a standard part of the Java Platform, Standard Edition (Java SE platform).Java Management Extensions (JMX) was introduced in J2SE 5.0 release.
It provides an architecture to manage resources dynamically at runtime. JMX is used mostly in enterprise applications to make the system configurable or to get the state of application at any point of time. Because the JMX technology is dynamic, you can use it to monitor and manage resources as they are created, installed and implemented. You can also use the JMX technology to monitor and manage the Java Virtual Machine (Java VM).
JMX Monitoring is done by querying data from Managed Beans (MBeans) that are exposed via a JVM port (JMX console). A MBean represents a resource running inside a JVM and provides data on the configuration and usage of that resource. MBeans are typically grouped into "domains" to denote where resources belong to.
Using the JMX, a given resource is instrumented by one or more Java objects known as Managed Beans, or MBeans. These MBeans are registered in a core-managed object server, known as an MBean server.
The MBean server acts as a management agent and can run on most devices that have been enabled for the Java programming language.
The JMX technology defines standard connectors known as JMX connectors that enable you to access JMX agents from remote management applications such as JConsole.
The JConsole graphical user interface is a monitoring tool that complies to the Java Management Extensions (JMX) specification. JConsole uses the extensive instrumentation of the Java Virtual Machine (Java VM) to provide information about the performance and resource consumption of applications running on the Java platform.
You can use JConsole to monitor both local applications (running on the same system as JConsole), as well as remote applications.
You start JConsole by typing the following command at the command line: jconsole. If you want to monitor a specific application, and you know that application's process ID then for local monitoring use the command: jconsole processID. To start JConsole for remote monitoring, you use the following command syntax: jconsole hostName:portNum.
The Java Virtual Machine has the JPS (Java Process Status) tool which works like the ps command. JPS tool lists all Java Processes of a user.
jps -l command outputs the full package name for the application's main class or the full path name to the application's JAR file. jps -m command outputs the arguments passed to the main method. The output may be null for embedded JVMs.
The JMX technology provides developers the easier way to instrument Java applications, create smart agents, implement distributed management middleware and managers, and smoothly integrate these solutions into existing management and monitoring systems.
The JMX technology,
- enables Java applications to be managed without heavy investment,
- provides a standard way to manage Java applications, systems, and networks,
- provides a scalable, dynamic management architecture and leverages existing standard Java technologies.
A MBean is a managed Java object, similar to a JavaBeans, that follows the design patterns mentioned in the JMX specification. An MBean can represent a device, an application, or any resource that needs to be managed.
The JMX specification defines 5 types of MBean:
- Standard MBeans,
- Dynamic MBeans,
- Open MBeans,
- Model MBeans,
- and MXBeans.
A standard MBean is composed of an MBean interface and a class. The MBean interface lists the methods for all exposed attributes and operations. The class implements this interface and provides the functionality of the instrumented resource.
A standard MBean is defined by writing a Java interface called SomethingMBean and a Java class called Something that implements that interface. Every method in the interface defines either an attribute or an operation in the MBean. By default, every method defines an operation. Attributes and operations are methods that follow certain design patterns.
Once a resource has been instrumented by MBeans, the management of that resource is performed by a JMX agent.
A MXBean is a type of MBean that references only a predefined set of data types. In this way, you can be sure that your MBean will be usable by any client, including remote clients, without any requirement that the client have access to model-specific classes representing the types of your MBeans. MXBeans provide a convenient way to bundle related values together, without requiring clients to be specially configured to handle the bundles.
Similar to standard MBean, MXBean is composed of an MXBean interface and a class.