Java Management Extensions (JMX) is a standard component of the Java Platform. It was first added to the J2SE 5.0 release. It is a set of specifications used for network and application management. It specifies a method for developers to integrate the applications they are working on with their network management software by assigning Java objects with management attributes.
JMX gives developers a standard and simple way to manage resources, including services, devices, and applications. It is dynamic, making it possible to manage and monitor resources as soon as they are created, implemented or installed.
With Java Management Extensions technology, a resource is represented by Managed Beans or mBeans. These are registered on the mBean server, a core-managed object server that acts as an agent and can be used on a majority of devices that support Java.
In simpler terms, mBeans acts like Java wrappers for services, components, devices, or applications in a distributed network, while the mBean server provides the actual management, as it is where you would find all the manageable resources. This server then becomes the central focus of the architectural frame, which allows server components to plug in and find manageable objects.
A JMX agent, therefore, would consist of the mBean server, plus the services needed to handle the mBeans (you’ll also want an APM solution that includes application framework metrics like mBeans and performance counters). This means that the resources are independent and apart from the management infrastructure, and these resources are manageable no matter how the management applications are deployed.
Java Management Extensions specifies standard connectors, which are called JMX connectors. These connectors allow you to access the agents from your remote management applications. These connectors may use different protocols and still work with the same management interface. On the other hand, a management application can easily manage the resources, no matter what communication protocol is used. In fact, it is possible to use JMX agents with systems and applications that are not compatible with the JMX specifications, as long as these applications support JMX agents.
There are many reasons why you should use Java Management Extensions technology – as it provides you with a flexible way to create Java applications.
With JMX technology:
- You can now manage Java applications on devices that you already have. What’s more, you do not have to change the design of your application and still be able to manage them easily. All your application needs to have is the managed object server, and as long as the mBeans are registered in the object server, you can use its functionality.
- You now have a standard means to manage your Java systems, networks and applications. For instance, your Java EE 5 application server is compatible with JMX and can be managed using JMX technology.
- You can also use it to manage JVMs. You can initiate a JMX agent to gain access to the instrumentation found in a JVM, at which point you can now remotely monitor or manage a Java virtual machine.
- You now have a dynamic and scalable management architecture. Each JMX agent service can be used with the management agent. This modularity means that the technologies can scale and can be used with smaller devices to huge telecommunication systems. Just as long as you have the core services identified by the specification, you can add services and load, unload, and update these dynamically.
JMX uses standard Java technology and will use current Java specifications. For instance, it will follow the conventions set forth by the Java Naming and Directory Interface API.
You can use a NetBeans IDE module to create a JMX application. This would help you cut down on costs in developing JMX apps.
Moreover, it works with many current management solutions. JMX API is open source, making it easier for management system vendors to incorporate the technology into their own solutions. It can also use lookup and discovery protocols and services, such as Service Location Protocol or the Jini network technology.
JConsole is a monitoring tool for Java Management Extensions. It uses a wide array of JMX instrumentation and gives you data on resource consumption as well as the performance of Java applications. You can start JConsole by running the JConsole executable, which you can find on the JDK_HOME/bin directory.
You can use JConsole for monitoring local and remote applications. It is best practice, however, to use JConsole only when you are developing or prototyping applications, rather than using it in production environments. The reason for this is because JConsole uses up a lot of system resources. If you want to connect JConsole to an agent, you would need to specify that agent when you start up. You can also connect to an agent anytime by going to the advanced tab and then type in the URL, username, and password.
JConsole allows you to see a lot of information including the uptime, compile time, live threads, peak, current heap size, current classes loaded, free physical memory and others. For mBeans, you can see all the information on every mBean registered with that server, including a list of all the mBeans arranged by object names. When you choose a specific mBean, you would be able to see its attributes, operations, info and notifications in four easily navigable tabs. From here, you can check to see the attributes, and if they are writeable, you can set the value for that particular attribute.
JMX Console is the management console used by JBoss. It gives you a raw view of all the mBeans that the JBoss server has. The console gives you information on the running server, how to modify its setup, as well as stop or start components, among other tasks. Note that JBoss is a middleware that is provided by Red Hat Inc., and is open source. You can, however, subscribe to JBoss to help you build your expertise, get support when necessary, and deploy without having to go through the complexities of deploying open source software.
Additional Resources and Java Management Extensions Tutorials
For more information, including some helpful tutorials, visit the following resources: