Red Hat has released JBoss Enterprise Application Platform (EAP) 8.1, bringing significant upgrades for enterprise Java applications running on-premise and on cloud environments like Red Hat OpenShift. Building upon the Jakarta EE 10 foundation introduced in EAP 8.0, JBoss EAP 8.1 delivers official support for Java 21 LTS, native OpenTelemetry integration, automated WildFly Channel provisioning, and security enhancements across Elytron and OpenID Connect (OIDC).

⚡ Executive Summary & Quick Takeaways

  • Java Support: Java 11, 17, and now Java 21 LTS are fully supported (Java 8 remains permanently removed).
  • Provisioning Revolution: EAP 8.1 enforces channel-based provisioning via eap-maven-plugin and WildFly Channels for reliable dependency resolution.
  • Observability & Tracing: Native OpenTelemetry support replaces legacy MicroProfile OpenTracing.
  • Security: PicketBox is completely removed; Elytron OIDC and jaas-realm handle authentication natively.

JBoss EAP 8.0 vs JBoss EAP 8.1 Comparison

Feature / Subsystem JBoss EAP 8.0 JBoss EAP 8.1 (Latest)
Java SE Version JDK 11, JDK 17 JDK 11, JDK 17, JDK 21 (LTS)
EE Specification Jakarta EE 10 (Full, Web & Core Profile) Jakarta EE 10 + Updated Subsystems
Distributed Tracing Legacy OpenTracing (Deprecation Phase) Native OpenTelemetry (Jaeger / OTLP)
Galleon Provisioning Manual GAV Feature-Packs WildFly Channel Manifests (eap-8.1 channel)
Security Subsystem Elytron + OIDC (Keycloak Adapter Removed) Enhanced Elytron OIDC + Multi-tenancy RBAC

1) Java 21 LTS Native Support Runtime

While JBoss EAP 8.0 dropped Java 8 in favor of JDK 11 and 17, JBoss EAP 8.1 officially adds full certification for Java 21 LTS. Running EAP 8.1 on Java 21 enables applications to leverage modern JVM features such as Virtual Threads, Pattern Matching, and improved garbage collection (Generational ZGC).

To safely migrate your application source code to Java 17/21, you can automate refactoring using the OpenRewrite plugin in your Maven build:

<plugin>
    <groupId>org.openrewrite.maven</groupId>
    <artifactId>rewrite-maven-plugin</artifactId>
    <version>5.40.0</version>
    <configuration>
        <activeRecipes>
            <recipe>org.openrewrite.java.migrate.UpgradeToJava21</recipe>
        </activeRecipes>
    </configuration>
</plugin>

2) Jakarta EE 10 Core Profile & Lightweight Provisioning Jakarta EE

JBoss EAP 8.1 implements the Jakarta EE 10 Full Platform, Web Profile, and Core Profile specifications. All package imports must use the jakarta.* namespace instead of legacy javax.*.

For cloud microservices, EAP 8.1 provides the ee-core-profile-server Galleon layer, which strips away unneeded traditional EE components (like JSF, EJB, or JMS) to drastically reduce startup time and memory footprint.

# Run EAP 8.1 with the standalone Core Profile configuration
$ ./standalone.sh -c docs/examples/standalone-ee-core.xml

3) Streamlined Channel-Based Provisioning (WildFly Channels) DevOps

In JBoss EAP 8.1, provisioning is managed using WildFly Channels. Channels ensure that Maven downloads reproducible, tested sets of artifacts defined by Red Hat channel manifests rather than loose version ranges.

Here is an updated pom.xml profile configuring the eap-maven-plugin with the official EAP 8.1 channel for OpenShift deployment:

<profile>
    <id>openshift</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.jboss.eap.plugins</groupId>
                <artifactId>eap-maven-plugin</artifactId>
                <version>1.0.2.Final-redhat-00001</version>
                <configuration>
                    <channels>
                        <channel>
                            <manifest>
                                <groupId>org.jboss.eap.channels</groupId>
                                <artifactId>eap-8.1</artifactId>
                            </manifest>
                        </channel>
                    </channels>
                    <feature-packs>
                        <feature-pack>
                            <location>org.jboss.eap:wildfly-ee-galleon-pack</location>
                        </feature-pack>
                        <feature-pack>
                            <location>org.jboss.eap.cloud:eap-cloud-galleon-pack</location>
                        </feature-pack>
                    </feature-packs>
                    <layers>
                        <layer>cloud-server</layer>
                    </layers>
                    <filename>ROOT.war</filename>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>package</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>

4) Native OpenTelemetry Subsystem & Tracing Observability

JBoss EAP 8.1 replaces the deprecated MicroProfile OpenTracing framework with the opentelemetry subsystem. This provides native distributed tracing exporting data via OpenTelemetry Protocol (OTLP) to collectors like Jaeger, Zipkin, or Grafana Tempo.

# Enable OpenTelemetry tracing via JBoss CLI
/subsystem=opentelemetry:add(exporter={type=otlp, endpoint="http://otel-collector:4317"})

5) OpenID Connect (OIDC) & Elytron Security Enhancements Security

Legacy Keycloak client adapters are obsolete in EAP 8. Native security is handled exclusively by the elytron-oidc-client subsystem. In EAP 8.1, OIDC support includes expanded multi-tenancy capabilities, bearer token validation, and RBAC integration for both deployed applications and the Management Console.

For custom legacy login modules, EAP 8.1 provides the jaas-realm within Elytron to bridge custom JAAS login modules without reverting to PicketBox:

<security-realm name="CustomJaasRealm">
    <jaas-realm name="jaas-realm" entry="CustomLoginContext"/>
</security-realm>

6) Advanced Session Affinity Strategies in Clustering Clustering

The distributable-web subsystem in JBoss EAP 8.1 offers granular control over load balancer "stickiness" for distributed HTTP sessions across clustered nodes:

  • primary-owner: Directs requests to the node holding the primary session lock.
  • ranked: Routes requests to a ranked list of primary and backup nodes for maximum failover resilience.
  • local: Binds affinity to the node that last handled the HTTP request.
  • none: Disables load balancer session stickiness.
# Update session affinity to 'ranked' strategy using CLI
batch
/subsystem=distributable-web/infinispan-session-management=default/affinity=primary-owner:remove
/subsystem=distributable-web/infinispan-session-management=default/affinity=ranked:add()
run-batch

7) ProtoStream Session Marshalling Performance

In EAP 8.1, web session replication can be configured using ProtoStream (based on Google Protocol Buffers) instead of legacy JBoss Marshalling. ProtoStream improves serialization speeds, reduces network payload size, and prevents arbitrary remote code execution during session unmarshalling.

<cache-container name="web" default-cache="passivation" marshaller="PROTOSTREAM" modules="org.wildfly.clustering.web.infinispan">
    <local-cache name="passivation">
        <file-store passivation="true"/>
    </local-cache>
</cache-container>

8) EE Subsystem Global Directories Configuration

EAP 8.1 allows administrators to define a Global Directory inside the ee subsystem. This lets you attach external JAR files or shared resources to the classpath of all deployments automatically, without modifying individual WAR/EAR archives or creating custom JBoss modules manually.

# Add a global directory via JBoss CLI
/subsystem=ee/global-directory=shared-libs:add(path="/opt/eap/shared-libs")

9) Environment Variable Model Expression Resolution Cloud

JBoss EAP 8.1 resolves management model expressions against both Java System Properties (-Dproperty=value) and system Environment Variables. This makes containerizing EAP configuration in Kubernetes/OpenShift significantly easier.

If an expression like ${db.host:localhost} is defined, EAP checks system properties first. If absent, it automatically checks environment variables named DB_HOST before applying the default fallback.

# Set environment variable in Linux / OpenShift Pod
export DB_HOST=prod-db.example.com

10) Built-in Red Hat Insights Integration Management

JBoss EAP 8.1 includes the updated Red Hat Insights Java Client module. When running on Red Hat Enterprise Linux (RHEL) connected to Red Hat Insights, EAP automatically sends telemetry regarding runtime health, heap metrics, and security patch advisories to your Red Hat Hybrid Cloud Console.

If you prefer to disable this background telemetry client, set the opt-out environment variable:

export RHT_INSIGHTS_JAVA_OPT_OUT=true

Migration Checklist: Upgrading from EAP 7.4 to EAP 8.1

  1. Run the Server Migration Tool: Execute the automated migration script located in bin/jboss-server-migration.sh to convert your EAP 7.x standalone.xml configuration to EAP 8.1.
    ./bin/jboss-server-migration.sh --source /path/to/jboss-eap-7.4 --target /path/to/jboss-eap-8.1
  2. Refactor Namespace: Replace all javax.* package imports with jakarta.* in your Java code and pom.xml.
  3. Upgrade JDK Target: Ensure your application builds with Java 11, 17, or 21 (Java 8 is unsupported).
  4. Remove PicketBox & Keycloak Adapters: Migrate legacy security domains to Elytron security realms and use elytron-oidc-client for OIDC authentication.

Frequently Asked Questions (FAQs)

Q1: Is Java 8 supported in JBoss EAP 8.1?

No. Java 8 support was permanently removed in JBoss EAP 8.0. JBoss EAP 8.1 requires Java 11, Java 17, or Java 21 LTS as the minimum runtime JVM environment.

Q2: How do I migrate from javax to jakarta in JBoss EAP 8.1?

You must update your source code imports (e.g. jakarta.servlet.http.HttpServlet instead of javax.servlet.http.HttpServlet) and update your Maven dependencies to Jakarta EE 10 versions. Tools like OpenRewrite or Red Hat MTA can automate this transformation.

Q3: What happened to the Keycloak SAML and OIDC client adapters?

Red Hat deprecated and removed the Keycloak Client Adapters in EAP 8. OIDC authentication is now natively handled by WildFly's built-in elytron-oidc-client subsystem.

Conclusion

JBoss EAP 8.1 represents a mature, modern application server release tailored for cloud-native workloads. With full support for **Java 21 LTS**, channel-based provisioning, native OpenTelemetry, and refined Elytron security, upgrading to EAP 8.1 provides better performance, enhanced security, and streamlined OpenShift deployments.

For full details, refer to the official Red Hat JBoss EAP 8.1 Documentation.