Latest Articles

How to configure SSL/HTTPS on WildFly

Securing your applications with SSL/HTTPS in WildFly or JBoss EAP is essential for protecting sensitive data and ensuring compliance with modern security standards. In this updated guide, you will learn how to configure HTTPS on WildFly in 2025, using secure TLS protocols and managing certificates with modern tools.

How to Use Let’s Encrypt for WildFly SSL Certificates

Securing your WildFly or JBoss EAP server with SSL/HTTPS is essential for protecting data and ensuring compliance with security best practices. Using Let’s Encrypt, you can automate the issuance and renewal of SSL certificates for your WildFly applications, removing the hassle of manual certificate management and ensuring your deployments remain secure with valid, up-to-date certificates.

How to wait in Java with Awaitility

Testing asynchronous operations in Java can be challenging, especially when working with microservices, reactive applications, and event-driven architectures where you need to wait for conditions to become true without using unreliable Thread.sleep() calls. Awaitility is a lightweight Java library that simplifies waiting in your tests, allowing you to write clear, fluent, and robust asynchronous tests. In this updated guide, you will learn how to use Awaitility for testing Java, Spring Boot, Quarkus, and Jakarta EE applications, with practical examples aligned with modern testing practices for cloud-native environments and CI/CD pipelines.

How to set and load Properties in WildFly ?

If you are working with WildFly or JBoss EAP in 2025, managing system properties and application configurations effectively is essential for containerized deployments, CI/CD pipelines, and cloud-native workloads. Whether you need to inject environment-specific variables, manage secret values, or configure tuning parameters, understanding how to set and load properties in WildFly ensures your applications remain portable, maintainable, and aligned with modern DevOps practices. This updated guide shows multiple methods to inject system properties into WildFly, including CLI commands, standalone.xml edits, and environment variable approaches suitable for Kubernetes and OpenShift deployments.

How to solve javax.net.ssl.SSLHandshakeException

If you encounter javax.net.ssl.SSLHandshakeException while developing or deploying Java applications on WildFly, Spring Boot, Quarkus, or microservices, it often indicates a mismatch between your client and server TLS configurations. This exception can result from expired certificates, missing trusted CA certificates, or unsupported TLS versions (TLS 1.0/1.1 being deprecated) in your JVM or server configuration. In this updated guide, you will learn practical, step-by-step methods to diagnose and solve SSLHandshakeException in Java, ensuring your applications remain secure and compliant with modern TLS 1.2 and TLS 1.3 standards while maintaining connectivity to HTTPS endpoints.

Keycloak Using Docker and Docker Compose (2025 Edition)

In this updated tutorial, we’ll walk you through the step-by-step process of running Keycloak 26 with Docker. We will learn how to deploy Keycloak with Docker and Docker Compose, covering development mode, data persistence and production set up with PostgreSQL.

How to configure the Transaction Timeout in JBoss / WildFly

In modern WildFly and JBoss EAP versions, transaction timeout management remains an essential part of tuning enterprise applications to handle long-running operations gracefully. While the default timeout of 300 seconds works for most scenarios, microservices, cloud-native deployments, and Jakarta EE applications often require fine-tuned transaction settings to align with modern distributed architectures. Adjusting transaction timeouts can help prevent unnecessary rollbacks, optimize resource usage, and avoid stuck threads in high-load environments.

Examples of jboss-deployment-structure.xml

This tutorial contains some examples of how to configure the file jboss-deployment-structure.xml . This file allows to fine tune the modules of your applications running on WildFly. The advantage of using this file (compared to the Manifest’s entry) is that you can define dependencies across top-level deployments and subdeployments.

Solving java.lang.OutOfMemoryError: Metaspace error

The error java.lang.OutOfMemoryError:Metaspace indicates that you have exhausted an area of JVM which serves as a registry for your application’s Class Metadata. This article is a step-by-step guide to fix Java Metaspace errors with Java 17’s elastic metaspace (JEP 387), diagnostic tools like jcmd, and best practices for JVM configuration.

Solving Unable to load the mojo ‘war’ in the plugin

If you’re migrating a Java EE or Jakarta EE project to Java 17 or later, and you’re using Maven 3.8 or newer, you might encounter the following error during a mvn package or mvn install: ” Unable to load the mojo ‘war’ in the plugin ‘org.apache.maven.plugins:maven-war-plugin‘. This issue is often triggered when your project implicitly uses an outdated version of the maven-war-plugin that is incompatible with newer Java versions or Maven APIs.

How to Start, Stop and Restart JBoss or WildFly

This guide contains some tips to teach you how to start, stop, restart WildFly application server. By the end of this tutorial, you will be able to effectively manage the lifecycle of your Wildfly server as needed. Besides, we provide some troubleshooting tips to verify why the start or restart does not work.

PrimeFaces with Jakarta EE 10 made simple

In this updated article we will discuss how to create and deploy a Jakarta EE 11 ( available since June 2025) application that uses Primefaces as Jakarta Faces implementation. We will build a sample application that will run in microservice-style as WildFly Bootable JAR.

Choosing the right JDK for WildFly and JBoss EAP

This tutorial discusses the recommended JDK versions to be used for WildFly and JBoss Enterprise Application Platform (EAP) and how to set the Java version for it. The article is updated to July 2025 and we will keep it in sync with new server versions as thei are available.