Skip to content

Commit 64aab34

Browse files
committed
[build 👷] Prepare 2.5.0 release - version references and news
1 parent d835d0c commit 64aab34

5 files changed

Lines changed: 242 additions & 11 deletions

File tree

HOWTO_RELEASE.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -257,9 +257,9 @@ values in the console.
257257
git clone [email protected]:jolokia/jolokia.git
258258
cd jolokia
259259
mvn -Dmaven.repo.local=/tmp/repo \
260-
-DdevelopmentVersion=2.4.3-SNAPSHOT \
261-
-DreleaseVersion=2.4.2 \
262-
-Dtag=v2.4.2 \
260+
-DdevelopmentVersion=2.5.1-SNAPSHOT \
261+
-DreleaseVersion=2.5.0 \
262+
-Dtag=v2.5.0 \
263263
-Pdist release:prepare
264264
mvn -Dmaven.repo.local=/tmp/repo \
265265
-Pdist release:perform
@@ -346,7 +346,7 @@ branch of Jolokia and pushed the changes:
346346
```console
347347
git checkout gh-pages
348348
# copy changed site
349-
grep -lr 2.4.3-SNAPSHOT | xargs sed -i 's/2.4.3-SNAPSHOT/2.4.2/g'
349+
grep -lr 2.5.1-SNAPSHOT | xargs sed -i 's/2.5.1-SNAPSHOT/2.5.0/g'
350350
git add .
351351
git commit -m '[site] Generate new Jolokia site'
352352
git push origin HEAD
@@ -359,7 +359,7 @@ git push origin HEAD
359359
3. Set `<currentStableVersion>` to new released version in `pom.xml`
360360
4. If NPM packages are released, Set new JS version in `package.json` files and in `client/javascript-esm/packages/jolokia/src/jolokia.ts` for `CLIENT_VERSION` field
361361
5. Update `src/changes/changes.xml` and `src/site/asciidoc/news.adoc`
362-
6. `mvn -Dmaven.repo.local=/tmp/repo -DdevelopmentVersion=2.4.3-SNAPSHOT -DreleaseVersion=2.4.2 -Dtag=v2.4.2 -Pdist release:prepare`
362+
6. `mvn -Dmaven.repo.local=/tmp/repo -DdevelopmentVersion=2.5.1-SNAPSHOT -DreleaseVersion=2.5.0 -Dtag=v2.5.0 -Pdist release:prepare`
363363
7. `mvn -Dmaven.repo.local=/tmp/repo -Pdist release:perform`
364364
8. Create release at https://github.com/jolokia/jolokia/releases (`target/checkout/assembly/target`: `.tar.gz`, `.zip`, `.asc` and `agent/jvm/target`: `.deb`, `.asc`)
365365
9. Handle the release at https://central.sonatype.com/publishing/deployments
@@ -379,7 +379,7 @@ yarn npm publish
379379
git checkout gh-pages
380380
# copy changed site
381381
# change SNAPSHOT version - should be done better...
382-
grep -lr 2.4.3-SNAPSHOT | xargs sed -i 's/2.4.3-SNAPSHOT/2.4.2/g'
382+
grep -lr 2.5.1-SNAPSHOT | xargs sed -i 's/2.5.1-SNAPSHOT/2.5.0/g'
383383
git add .
384384
git commit -m '[site] Generate new Jolokia site'
385385
git push origin HEAD

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1169,7 +1169,7 @@
11691169
<sonar.projectKey>org.jolokia:jolokia-2.0</sonar.projectKey>
11701170

11711171
<!-- A version used in documentation -->
1172-
<currentStableVersion>2.4.2</currentStableVersion>
1172+
<currentStableVersion>2.5.0</currentStableVersion>
11731173
<!-- Jolokia protocol version -->
11741174
<protocolVersion>8.2</protocolVersion>
11751175

src/changes/changes.xml

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!--
3-
~ Copyright 2009-2019 Roland Huss
3+
~ Copyright 2009-2026 Roland Huss
44
~
55
~ Licensed under the Apache License, Version 2.0 (the "License");
66
~ you may not use this file except in compliance with the License.
@@ -17,12 +17,89 @@
1717

1818
<document xmlns="http://maven.apache.org/changes/1.0.0"
1919
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
20-
xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
20+
xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 https://maven.apache.org/xsd/changes-1.0.0.xsd">
2121
<properties>
2222
<title>Jolokia</title>
2323
<author email="[email protected]">Roland Huß</author>
2424
</properties>
2525
<body>
26+
<release version="2.5.0" description="Release 2.5.0" date="2026-02-10">
27+
<action dev="ggrzybek" type="add" issue="974">
28+
ArtemisDetector should handle new groupId for Artemis
29+
</action>
30+
<action dev="ggrzybek" type="add" issue="966">
31+
Retrieve OpenType information in Jolokia list requestsBig
32+
</action>
33+
<action dev="ggrzybek" type="add" issue="965">
34+
Incorporate unified Jolokia serialization in jolokia-client-jmx-adapter
35+
</action>
36+
<action dev="ggrzybek" type="add" issue="964">
37+
Consider supporting java.util.logging for Jolokia Client
38+
</action>
39+
<action dev="ggrzybek" type="fix" issue="962">
40+
Review Jolokia exception handling
41+
</action>
42+
<action dev="ggrzybek" type="fix" issue="953">
43+
UnsupportedOperationException: Usage threshold is not supported
44+
</action>
45+
<action dev="tommystendahl" type="fix" issue="951">
46+
IPv6 addresses in JolokiaJmxConnector give IllegalArgumentException
47+
</action>
48+
<action dev="ggrzybek" type="fix" issue="950">
49+
Jobs should handle HTTP/fetch errors too in a configurable way
50+
</action>
51+
<action dev="ggrzybek" type="fix" issue="940">
52+
jolokia-support-spring fails if actuators aren't running on separate management port
53+
</action>
54+
<action dev="ggrzybek" type="fix" issue="937">
55+
Registered jobs are delayed till the next refreshRate tick
56+
</action>
57+
<action dev="ggrzybek" type="fix" issue="934">
58+
ObjectToJsonConverter throws NumberFormatException when converting NaN metrics
59+
</action>
60+
<action dev="ggrzybek" type="add" issue="931">
61+
Support for Spring Boot 4
62+
</action>
63+
<action dev="ggrzybek" type="add" issue="923">
64+
Update Spring Support documentation
65+
</action>
66+
<action dev="ggrzybek" type="add" issue="916">
67+
Document the changes in protocol version 8.1 and 8.2
68+
</action>
69+
<action dev="ggrzybek" type="fix" issue="914">
70+
Skip assertion if issue with Jolokia conversion
71+
</action>
72+
<action dev="ggrzybek" type="add" issue="913">
73+
Document changes to Jolokia Java Client (JDK, HttpClient4, HttpClient5)
74+
</action>
75+
<action dev="ggrzybek" type="add" issue="911">
76+
SSL Configuration in jolokia-adapter
77+
</action>
78+
<action dev="ggrzybek" type="add" issue="892">
79+
Make OSGi dependencies optional
80+
</action>
81+
<action dev="ggrzybek" type="add" issue="888">
82+
Improve Jolokia serialization and use it in jolokia-client-java
83+
</action>
84+
<action dev="ggrzybek" type="add" issue="767">
85+
Document ServerDetector improvements (runtime-specific classloader)
86+
</action>
87+
<action dev="ggrzybek" type="fix" issue="666">
88+
RemoteJmxAdapter.isInstanceOf should handle NoClassDefFoundError, not just ClassNotFoundException
89+
</action>
90+
<action dev="ggrzybek" type="fix" issue="613">
91+
Issues with flight recordings over JMX adapter
92+
</action>
93+
<action dev="ggrzybek" type="add" issue="471">
94+
Document Configuring JMX Adapter
95+
</action>
96+
<action dev="ggrzybek" type="add" issue="376">
97+
Document how to use @jsonmbean?
98+
</action>
99+
<action dev="ggrzybek" type="fix" issue="65">
100+
Change default behaviours
101+
</action>
102+
</release>
26103
<release version="2.4.2" description="Release 2.4.2" date="2025-11-17">
27104
<action dev="ggrzybek" type="fix" issue="932">
28105
Handle exceptions when fetching multiple attributes

src/site/asciidoc/news.adoc

Lines changed: 155 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
////
2-
Copyright 2009-2024 Jolokia Team
2+
Copyright 2009-2026 Jolokia Team
33

44
Licensed under the Apache License, Version 2.0 (the "License");
55
you may not use this file except in compliance with the License.
@@ -15,6 +15,160 @@
1515
////
1616
== News
1717
18+
=== Jolokia 2.5.0 released
19+
20+
[.news-date]
21+
2026-02-10
22+
23+
We're happy to announce a new big release of Jolokia 2.5.0!
24+
25+
==== A word on Semantic Versioning
26+
27+
First - a little apology for breaking https://semver.org/[Semantic Versioning] principles. Jolokia 2.4 and now 2.5 introduced some API
28+
changes related to refactoring and introduction of SPI interface for Jolokia Client (with 3 built-in implementations).
29+
30+
Jolokia is not a single library - it includes:
31+
32+
* Agent modules - for running Jolokia Agent as a Web Application in a https://jakarta.ee/specifications/servlet/6.1/jakarta-servlet-spec-6.1[Servlet Container], https://docs.spring.io/spring-boot/3.5/reference/actuator/endpoints.html[Spring Boot Actuator endpoint] or standalone Agent using https://docs.oracle.com/en/java/javase/17/docs/api/jdk.httpserver/module-summary.html[JDK HTTP Server].
33+
* Java Client libraries - for accessing the Agent using HTTP Client libraries (now - 3 different implementations)
34+
* JavaScript NPM packages - for accessing the Agent using JavaScript
35+
* https://docs.oracle.com/en/java/javase/17/docs/api/java.management/javax/management/remote/JMXConnector.html[JMX Connector (Client)] implementation
36+
* A Jolokia protocol specification (format of JSON messages) with own versioning scheme
37+
38+
Traditionally Jolokia didn't change the major version too often and we've decided to continue this tradition. +
39+
Indeed, Jolokia Client API has changed, but the migration should be straightforward (just change `J4p` to `Jolokia` prefix for several client-related classes). The main reason for the change was the introduction of SPI interface (`org.jolokia.client.spi.HttpClientSpi`) and removing direct dependency on https://hc.apache.org/httpcomponents-client-4.5.x/index.html[Apache HttpClient 4] API.
40+
41+
==== Module reorganization
42+
43+
Jolokia 2.4.0 introduced new Jolokia Client based on SPI interface and discoverable implementations. This change is combined with a refactoring of _serialization mechanisms_. Before Jolokia 2.4.0, we had three different mechanisms:
44+
45+
* Server (Agent) code was using the _best_ (de)serialization for all required complex data structures (based on Open Types from JMX)
46+
* Jolokia Client was used simplified serialization (object to JSON) mechanism for setting MBean attributes and invoking MBean operations
47+
* JMX Adapter (https://docs.oracle.com/en/java/javase/17/docs/api/java.management/javax/management/remote/JMXConnector.html[JMX Connector (Client)] implementation) was using simplified deserialization mechanism for building Java object from JSON data retrieved using Jolokia Client
48+
49+
Jolokia 2.5.0 removes this difference and now a single, unified (de)serialization mechanism is used in all these areas. This allows use to use Jolokia JMX Adapter with more complex MBeans like Java Flight Recorder.
50+
51+
A new `org.jolokia:jolokia-core` module is introduced - it contains common utilities (escaping, serialization, logging) to be reused throughout other Jolokia modules.
52+
53+
==== Open Types discovery
54+
55+
https://docs.oracle.com/en/java/javase/17/docs/api/java.management/javax/management/MXBean.html[MXBean Specification] has clear, strict, but very flexible rules for Java object representation using _Open Types_. +
56+
In Jolokia 2.5.0 we can use the `list` operation to retrieve actual structure of the complex Open Types used by M(X)Bean attributes and operations.
57+
58+
A picture is worth 1000 words, so here are the attributes for `java.lang:type=Memory` MBean before 2.5.0:
59+
60+
[,json]
61+
----
62+
{
63+
"request": {
64+
"path": "java.lang/type=Memory/attr",
65+
"type": "list"
66+
},
67+
"value": {
68+
...
69+
"HeapMemoryUsage": {
70+
"r": true,
71+
"rw": false,
72+
"w": false,
73+
"is": false,
74+
"type": "javax.management.openmbean.CompositeData",
75+
"desc": "HeapMemoryUsage"
76+
},
77+
"NonHeapMemoryUsage": {
78+
"r": true,
79+
"rw": false,
80+
"w": false,
81+
"is": false,
82+
"type": "javax.management.openmbean.CompositeData",
83+
"desc": "NonHeapMemoryUsage"
84+
},
85+
...
86+
},
87+
"status": 200,
88+
"timestamp": 1770722333
89+
}
90+
----
91+
92+
And here's what we get with Jolokia 2.5.0:
93+
94+
[,json]
95+
----
96+
{
97+
"request": {
98+
"path": "java.lang/type=Memory/attr",
99+
"type": "list"
100+
},
101+
"value": {
102+
...
103+
"HeapMemoryUsage": {
104+
"r": true,
105+
"rw": false,
106+
"w": false,
107+
"is": false,
108+
"type": "javax.management.openmbean.CompositeData",
109+
"desc": "HeapMemoryUsage",
110+
"openType": {
111+
"kind": "composite",
112+
"type": "java.lang.management.MemoryUsage",
113+
"class": "javax.management.openmbean.CompositeData",
114+
"items": {
115+
"init": "java.lang.Long",
116+
"committed": "java.lang.Long",
117+
"max": "java.lang.Long",
118+
"used": "java.lang.Long"
119+
},
120+
"desc": "java.lang.management.MemoryUsage"
121+
}
122+
},
123+
...
124+
},
125+
"status": 200,
126+
"timestamp": 1770722390
127+
}
128+
----
129+
130+
==== JMX Adaptor improvements
131+
132+
We've reviewed entire code for https://docs.oracle.com/en/java/javase/17/docs/api/java.management/javax/management/remote/JMXConnector.html[JMX Connector (Client)] implementation. +
133+
Unified (de)serialization mechanism is now used in this module. With additional information on the Open Types used by the MBeans, Jolokia works much better with tools like JConsole.
134+
135+
Additionally we've introduced a declarative way of configuring the Jolokia Client used by Jolokia JMX Adaptor. When using JConsole with Jolokia, we can easily configure TLS support using system properties or environment variables.
136+
137+
For example we can run `jconsole` with this command line:
138+
[,shell]
139+
----
140+
$ JOLOKIA_CLIENT_KEY_PASSWORD=jolokia \
141+
jconsole \
142+
-J-Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel \
143+
-J-Dsun.java2d.uiScale=3 \
144+
-J-Djava.class.path=$HOME/.m2/repository/org/jolokia/jolokia-client-jmx-adapter/2.5.0/jolokia-client-jmx-adapter-2.5.0-standalone.jar \
145+
-J-Djolokia.caCertificate=ca.cer.pem \
146+
-J-Djolokia.clientCertificate=client.cer.pem \
147+
-J-Djolokia.clientKey=client-private.key-pk8.pem
148+
----
149+
150+
Certificates and private keys (DER or PEM format, encrypted or plain) can be used without a need to build Java keystores.
151+
152+
==== Improved exception handling
153+
154+
We've reviewed exception handling code. All errors caused by malformed using input (invalid JSON, unknown processing parameters) cause HTTP 400 error (`Bad Request`). +
155+
All JMX errors (except security issues) cause Jolokia error which include an actual JMX exception - so we can better implement the `javax.management.MBeanServerConnection` contract.
156+
157+
==== Spring Boot 4 / Spring Framework 7 support
158+
159+
Due to https://spring.io/blog/2025/10/28/modularizing-spring-boot[Spring Boot 4 modularization effort], we had to alter the way Jolokia is registered as an actuator endpoint. We didn't stop supporting Spring Boot 3, but we now include two separate modules:
160+
161+
* `org.jolokia:jolokia-support-springboot3` - for legacy Spring Boot 3 support
162+
* `org.jolokia:jolokia-support-springboot` - for Spring Boot 4 (and hopefully next versions)
163+
164+
Before Jolokia 2.5.0 we had only one `org.jolokia:jolokia-support-spring` module. And again, breaking (a bit) Semantic Versioning principles, we've renamed the module to highlight that it's actually for Spring Boot (and not only for Spring Framework).
165+
166+
==== Documentation improvements
167+
168+
And last, but not least, we've finally reviewed the documentation updating chapters about Jolokia Client, serialization, the Jolokia protocol and others.
169+
170+
Refer to https://jolokia.org/changes-report.html#a2.5.0[changelog] and https://github.com/jolokia/jolokia/releases/tag/v2.5.0[GitHub release notes] for more details.
171+
18172
=== Jolokia 2.4.2 released
19173
20174
[.news-date]

src/site/site.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<skin>
2626
<groupId>org.jolokia</groupId>
2727
<artifactId>jolokia-tools-siteskin</artifactId>
28-
<version>2.4.2</version>
28+
<version>2.5.0</version>
2929
</skin>
3030

3131
<bannerLeft>

0 commit comments

Comments
 (0)