Improve Application Management With JMX
Leverage JMX technology and existing tools to boost the operations management capabilities of your business applications.
by Borislav Iordanov
Posted March 15, 2004
The explosion of enterprise computing in the last decade has led to the proliferation of large-scale, server-based applications, many of which are deployed within a complex mixture of software and hardware components. As the scope and complexity of applications grow, capabilities for efficient and flexible management of their proper operation become increasingly essential to the success of business activities. On one hand, systems administrators face the challenge of managing a diverse amalgam of system- and application-specific components, each with its own set of administration facilities. On the other hand, managers and decision makers seeking to improve business processes need appropriate tools for business activity monitoring (BAM).
The development of custom application management software follows a common pattern, but it's nontrivial and it usually requires considerable effort. Moreover, it leads to inconsistent, incompatible, and platform-dependent solutions that put an unnecessary burden on both application developers and system operators. These and similar considerations have led to the development of the Java Management Extensions (JMX) API, a Java Community Process (JCP) specification geared toward the simplification and standardization of the runtime management infrastructure of enterprise Java applications.
I'll first examine the concepts and architecture behind JMX technology, then outline several informal examples of JMX use. Finally, I'll present a concrete programming example to show how you can combine JMX with aspect-oriented programming (AOP) technology to instrument your application without disrupting core business logic.
JMX Concepts and Architecture
JMX is conceptually simple, yet bears the fruit of years of domain experience and research. In a nutshell, JMX defines a standard means for applications to expose management functionality, a process called instrumentation, and a standard management middle tier, the JMX agent, which acts as a single point of entry to management components. So, application management in JMX is architecturally divided into three levels (see Figure 1):
- Instrumentation level: The level at which applications expose their management functionality. Application instrumentation relies on a few naming conventions and Java interfaces, and is completely independent of the particular JMX agent or management application operating it.
- Agent level: A container of instrumented entities and a set of standard management services. The agent is the core of a JMX implementation. In addition to delivering the services mandated by the specification, implementations can provide extensions, most notably in the form of protocol adaptors and connectors for remote access.
- Management level: The client level, encompassing various management applications. These include generic tools providing direct access to one or several distributed JMX agents, application-specific solutions that rely on particular domain knowledge, and scripting environments for management automation.
Back to top