Technical debt – paid

Finally, I’ve just upgraded the Wildfly v26.0.1 (released on January 21, 2022) to Wildfly v38.0.0 (released on October 16, 2025), under the hood of the Power of Planets project.

There was a big and significant technical debt in the files that I’d been carrying for months – what months?! – years. The main reason was the migration from Java EE to Jakarta EE: the Wildfly v26 was the last Wildfly to support both Java EE and Jakarta EE, and most of the changes were simple replacements like from javax.ejb.Remote to jakarta.ejb.Remote, and so on.

Since I had to work on the project anyway, I also upgraded from Java 8 to Java 21, although I haven’t written a new language element in this project yet (fix one thing at a time!), but now I will have the opportunity. Since I’ve been writing a lot of Kotlin code lately, I’m not that excited, Java still has room to improve… 🙂

During the upgrade I ran into a few weird deployment issues (mostly due to the Resteasy upgrade), but thanks to the unit-tests, integration tests and the api-tests – with over over 70% code coverage, mostly focused the core “business logic” – I can say with some confidence that the operation was successful!

There is one thing left, apart from manual testing: Discord4J still wants to call the Unsafe for some reason. It works fine otherwise, but it leaves an ugly exception in the log:

21:10:58,366 WARN  [reactor.core.Exceptions] (boundedElastic-1) throwIfFatal detected a jvm fatal exception, which is thrown and logged below:: java.lang.NoClassDefFoundError: sun/misc/Unsafe
        at deployment.gacivs-backend-services.war//com.github.benmanes.caffeine.cache.UnsafeAccess.load(UnsafeAccess.java:66)

Leave a Comment

Your email address will not be published. Required fields are marked *


Scroll to Top