
Jolokia is a JMX-HTTP bridge giving an alternative to JSR-160 connectors. It is an agent based approach with support for many platforms. In addition to basic JMX operations it enhances JMX remoting with unique features like bulk requests and fine grained security policies.
Starting points
-
Overview of features which make Jolokia unique for JMX remoting.
-
The documentation includes a tutorial and a reference manual.
-
Agents exist for many platforms (Jakarta EE, OSGi, JVM).
-
Support is available through GitHub.
-
Contributions are highly appreciated, too.
News
Jolokia 2.2.2 released
2025-02-05
New micro release of Jolokia 2.2.2 fixes slow startup time on Mac OS system and restores previous Java client behavior related to numeric value conversion to Java.
Refer to changelog and GitHub release notes for more details.
Jolokia 2.2.1 released
2025-01-23
We’re happy to release Jolokia 2.2.1! This is new minor release, as the scope of changes is a bit too wide for just 2.1.3 release.
In this release we’ve reviewed support for IPv6 in every place where IP addresses are used - UDP Multicast based discovery, policy restrictor for source IP addresses and URL usage. Jolokia now works properly with UDP/IP6 discovery using an option like multicastGroup=ff08::48:84,multicastPort=24884
(the default is still 239.192.48.84
).
Spring Boot dependency of jolokia-support-spring
module has been changed to 3.4.1, but that’s only declared dependency. Jolokia works well with all Spring Boot 3 versions.
One of the requested features was restarting Jolokia HTTP server when a change in configured TLS certificates was detected - this is especially important in Kubernetes/OpenShift deployments where the environment may use aggressive certificate refresh policy. Now there’s no need to restart entire pod when useCertificateReload
is set to a given number of seconds. It defaults to -1
to keep backward compatibility.
And the biggest change is improved configuration management. All options can use property placeholders like:
-
${sys:configurationOption}
(or${prop:configurationOption}
) to reference system properties -
${env:VARIABLE_NAME}
to reference environment variables -
${ip}
,${ip6}
,${host}
,${ip:<interface>}
(e.g.,${ip:eth0}
) to reference networking configuration
Also, similarly to Spring Boot configuration, Jolokia looks up configuration options in different sources/locations (in order of increasing priority - later sources override previous ones):
-
defaults from the code
-
defaults from
default-jolokia-agent.properties
resource of JVM Agent -
options from file specified by
config
option of JVM Agent -
environment variables with
JOLOKIA_
prefix -
system properties with
jolokia.
prefix -
servlet config parameters
-
servlet context parameters
-
remaining options of JVM Agent (command line)
With this release, current version of jolokia.js
npm package is 2.2.1 - even if it doesn’t bring any changes.
What happened to version 2.2.0? Just after release Klaus Dorninger found a problem with IPv4 only deployments (thanks for quick check!). So we needed 2.2.1…
Refer to changelog for detailed information about the release.
Jolokia 2.1.2 released
2024-11-13
Jolokia 2.1.2 is released and it is ready for more generic integration with other runtimes, especially with Apache Artemis.
Long existing ServerDetector
abstraction was enhanced to let Jolokia know about actual ClassLoader used within given runtime. For example, Apache Tomcat starts with just few JARs on system CLASSPATH and later the actual ClassLoader is constructed using JARs from ${catalina.home}/lib
. Now Jolokia running as JVM agent has proper access to classes from this broader ClassLoader.
Additionally we’ve provided a little diagnostic check to detect (usually incorrect) setup when Jolokia is running twice in single JVM (for example as WAR and JVM agent).
With this release, current version of jolokia.js
npm package is 2.1.8.
Refer to changelog for detailed information about the release.
Jolokia 2.1.1 released
2024-09-12
Jolokia 2.1.1 is released with adjustments to TypeScript type definitions and few improvements to new JavaScript ESM client.
With this release, current version of jolokia.js
npm package is 2.1.7.
Jolokia 2.1.0 released
2024-08-12
We’re happy to announce a new minor release of Jolokia! Minor releases introduce new features and may require a few adjustments to client code. But no worries - the client code needs some adjustments only for the new Jolokia JavaScript library!
New JavaScript libraries
After nine (!) years since the introduction of ES6 modules into JavaScript language, we’ve finally moved JavaScript code from manually created UMD-structured JavaScript files (see IIFE, UMD, The Evolution of JavaScript Modularity).
Because nowadays JavaScript "scripts" are consumed using packages, Jolokia provides a new Maven module (org.jolokia:jolokia-client-javascript-esm
) that contains modern JS packages:
-
jolokia.js
— While this package is already present in https://www.npmjs.com/package/jolokia.js, it now contains different targets—a proper ES module and ready-to-use files produced by Rollup JS bundler. -
@jolokia.js/simple
- this package replacesjolokia-simple.js
file which was part of initial NPM package.
What’s more, the new JavaScript library is developed using the TypeScript language without affecting end-user experience. We now have the full definition of the types used by Jolokia, which has already proved to be very useful in finding miscellaneous problems hidden in type-less JavaScript code.
Fetch API
Since Jolokia was created, JQuery Ajax performed HTTP calls from JavaScript code.
Instead of relying on external dependency, we use Fetch API, which is now standard in all modern, secure browsers.
This makes the Jolokia JavaScript library independent of any external dependency. It also makes the code aware of the async/await programming model and Promises API. See the dedicated chapter in the reference documentation.
New JSON parser
Since first available GitHub commit, Jolokia was using com.googlecode.json-simple:json-simple
JSON parser/serializer library. This library has quite an interesting history (moving from code.google.com to GitHub, forking, …). It does its job very well, but we’ve decided to make a bold move and remove this dependency without adding a new external JSON dependency.
Here’s what we did - we used JSON grammar used by json-simple
, checked the changes made in forked version and used JFlex to generate Jolokia own lexer.
With a working lexer, we’ve built our flexible parser/serializer to fulfill Jolokia’s needs. And yes, we’ve made it ~2x faster (in non-exhaustive tests involving Artemis broker running with 10,000 queues).
The new Jolokia module is org.jolokia:jolokia-json
and it fully replaces com.googlecode.json-simple:json-simple
library. Class names are the same, the only change is in the package name (switch from org.json.simple
to org.jolokia.json
).
New Jolokia protocol version
Going with the flow, after moving from JavaScript to TypeScript and getting our own JSON parser, we’ve introduced a new Jolokia protocol version, 8.0
. There’s more information in the relevant documentation section, but here’s a summary of the changes:
-
With the new
listKeys
processing/request parameter,list()
operation returns an additional"keys"
field for MBean’s MBeanInfo - it contains a map of the keys obtained from ObjectName -
With the new
includeRequest
processing/request parameter, we can tell Jolokia not to return incoming requests under the"request"
field of the response (defaults totrue
) -
The
list()
operation may be optimized with the newlistCache
processing/request parameter. It allows caching the common JSON-ified MBeanInfo to avoid duplicating it in thelist()
response for, say, 50,000 Artemis queue MBeans. Getting 2MB instead of 0.5GB of JSON is always a good thing. More details can be found in the documentation.
New extension points
To make list()
operation more flexible (based on experience gained from the Hawtio console), Jolokia now provides extension points for list()
. While it is still based on javax.management.MBeanServerConnection.queryMBeans()
call, we don’t necessarily blindly serialize each MBean’s javax.management.MBeanInfo
.
In detail, Jolokia offers these new extension hooks:
-
With the
org.jolokia.service.jmx.api.CacheKeyProvider
Jolokia service, we can ask third-party libraries whether a given MBean can be translated into a cache key. If many MBeans can be translated into a single cache key, we can optimize thelist()
response by caching common MBeanInfo. -
with the
org.jolokia.service.jmx.handler.list.DataUpdater
Jolokia service, we can get additional information inside JSON-ifiedjavax.management.MBeanInfo
- 3rd party extensions may add RBAC information or any other data into the MBeanInfo
Old issues resolved
It’s worth noting that we’ve also fixed issues dating back up to 2015…
-
Added support for custom date format for dates (and new
java.time
classes) -
Added support for multi-dimensional arrays
-
Added support for
java.util.Date
operation parameters -
Added ability to declare (in
jolokia-access.xml
) that some MBeans simply should not be returned insearch
andlist
operations.
Please refer to changelog for detailed information about the release.
Jolokia 2.0.3 released
2024-06-06
Jolokia 2.0.3 is released with 3 minor fixes. Certificate chains are handled better (thanks Shay Elkin!) and we know allow to configure how long
values are handled during JSON serialization.
Refer to changelog for detailed information about the release.
Jolokia 2.0.2 released
2024-03-07
Spring time is approaching and we’ve skimmed through some old issues to clean them up. Jolokia 2.0.2 is released with few minor fixes. Most notably, write-only JMX attributes are now handled correctly and heuristic Jolokia shutdown thread is replaced with proper JVM shutdown hook.
We’ve also ensured that all tests pass on IBM versions of JDK.
Refer to changelog for detailed information about the release.
Jolokia 2.0.1 released
2024-01-26
Following the big 2.0.0 release last year, we continue to improve Jolokia by clearing the backlog and adding new features and improvements.
With 2.0.1 release we’re fixing custom log handler configuration. We also integrate better with Spring Boot Actuator by handling management.endpoint.jolokia.enabled
property.
As always, please refer to changelog for more details.
Jolokia 2.0 arrives: A new chapter begins!
2023-12-19

We are excited to announce the long-awaited release of Jolokia 2.0, now available in Maven Central.
This release is a result of our dedicated effort in reviewing, restructuring, refactoring, and polishing. Here’s what Jolokia 2.0 brings to the table:
-
Support for JakartaEE 9+ (Servlet API 5+ with
jakarta.servlet
packages) -
Enhanced connectivity with JMX notifications
-
Integration with Spring Boot 3 and Spring Framework 6
-
A fresh, pluggable service-based architecture
-
A revamped and user-friendly Reference Manual powered by Antora
-
JDK 11 is the minimal version of JDK required. Spring related Jolokia modules require JDK 17. (No worries, we’re still supporting Jolokia 1.x with minimal version of JDK 1.6 supported).
And that’s not all. We’re already planning more frequent updates, including exciting new features like websockets and IPv6 support.
Jolokia 2 also gears up to seamlessly integrate with the upcoming Hawtio 4.0!
It should be straightforward to upgrade to new Jolokia 2 in JVM agent mode. WAR agent users should use any compatible JakartaEE 9+ container. Check out our Migration to 2.x guide for more information.
Your support and patience over these years have been incredible. We’re grateful for your enduring loyalty. Let’s end this year on a high note and step into 2024 with new energy and possibilities!
Warm regards,
Grzegorz, Tadayoshi, Roland
Jolokia has a new home!
2023-07-13
Yes, finally we moved Jolokia from my (rhuss) personal account to a dedicated GitHub organisation: https://github.com/jolokia. I’m super happy that the story of Jolokia continues and you will see quite some new faces very soon. Thanks Tadayoshi, Grzegorz, Aurélien and all the other fine folks from Red Hat who started to revive Jolokia. Also, Jolokia 2.0 becomes a realistic option again. Stay tuned!