Posted on May 20th, 2010 by roland
Jolokia is a fresh way for accessing JMX MBeans remotely. It is different to JSR-160 connectors in so far as it is an agent based approach which uses JSON over HTTP for its communication in a REST-stylish way.
Multiple agents are provided for different environments:
- WAR Agent for deployment as web application in a JEE Server.
- OSGi Agent for deployment in an OSGi container. This agent is packaged as a bundle and comes in two flavors (minimal, all-in-one).
- Mule Agent for usage within a Mule ESB
- JVM Agent which can be used with any Oracle/Sun JVM, Version 6
The agent approach as several advantages:
Since all communication is over HTTP, proxying through firewalls becomes mostly a none-issue (in contrast to RMI communication, which is the default mode for JSR-160)
No Java installation is required on the client side. E.g. Jmx4Perl provides a rich Perl client library and Perl based tools for accessing the agents.
The Setup is done by a simple agent deployment. In contrast, exporting JMX via JSR-160 can be remarkable complicated (see these blog posts for setting up Weblogic and JBoss for native remote JMX exposure setup)
Additionally, the agents provide extra features not available with JSR-160 connectors:
In contrast to JSR-160 remoting, Jolokia can process many JMX requests with a single roundtrip. A single HTTP POST request puts those requests in its JSON payload which gets dispatched on the agent side. These bulk requests can increase performance drastically especially for monitoring solutions. The Nagios plugin check_jmx4perl uses bulk requests for its multi check feature.
Fine grained security
In addition to standard HTTP security (SSL, HTTP-Authentication) Jolokia supports a custom policy with fine grained restrictions based on multiple properties like the client’s IP address or subnet, the MBean names and their attributes and operations. The policy is defined in an XML format with support for allow/deny sections and wildcards.
Jolokia can operate in an agentless mode where the only requirement on the target platform is the standard JSR-160 export of its MBeanServer. A proxy listens on the front side for Jolokia requests via JSON/HTTP and propagates these to the target server through remote JSR-160 JMX calls. Bulk requests gets dispatched into multiple JSR-160 requests on the proxy transparently.
More information on jolokia can be found at www.jolokia.org.