Skip to main content
Redhat Developers  Logo
  • AI

    Get started with AI

    • Red Hat AI
      Accelerate the development and deployment of enterprise AI solutions.
    • AI learning hub
      Explore learning materials and tools, organized by task.
    • AI interactive demos
      Click through scenarios with Red Hat AI, including training LLMs and more.
    • AI/ML learning paths
      Expand your OpenShift AI knowledge using these learning resources.
    • AI quickstarts
      Focused AI use cases designed for fast deployment on Red Hat AI platforms.
    • No-cost AI training
      Foundational Red Hat AI training.

    Featured resources

    • OpenShift AI learning
    • Open source AI for developers
    • AI product application development
    • Open source-powered AI/ML for hybrid cloud
    • AI and Node.js cheat sheet

    Red Hat AI Factory with NVIDIA

    • Red Hat AI Factory with NVIDIA is a co-engineered, enterprise-grade AI solution for building, deploying, and managing AI at scale across hybrid cloud environments.
    • Explore the solution
  • Learn

    Self-guided

    • Documentation
      Find answers, get step-by-step guidance, and learn how to use Red Hat products.
    • Learning paths
      Explore curated walkthroughs for common development tasks.
    • Guided learning
      Receive custom learning paths powered by our AI assistant.
    • See all learning

    Hands-on

    • Developer Sandbox
      Spin up Red Hat's products and technologies without setup or configuration.
    • Interactive labs
      Learn by doing in these hands-on, browser-based experiences.
    • Interactive demos
      Click through product features in these guided tours.

    Browse by topic

    • AI/ML
    • Automation
    • Java
    • Kubernetes
    • Linux
    • See all topics

    Training & certifications

    • Courses and exams
    • Certifications
    • Skills assessments
    • Red Hat Academy
    • Learning subscription
    • Explore training
  • Build

    Get started

    • Red Hat build of Podman Desktop
      A downloadable, local development hub to experiment with our products and builds.
    • Developer Sandbox
      Spin up Red Hat's products and technologies without setup or configuration.

    Download products

    • Access product downloads to start building and testing right away.
    • Red Hat Enterprise Linux
    • Red Hat AI
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Featured

    • Red Hat build of OpenJDK
    • Red Hat JBoss Enterprise Application Platform
    • Red Hat OpenShift Dev Spaces
    • Red Hat Developer Toolset

    References

    • E-books
    • Documentation
    • Cheat sheets
    • Architecture center
  • Community

    Get involved

    • Events
    • Live AI events
    • Red Hat Summit
    • Red Hat Accelerators
    • Community discussions

    Follow along

    • Articles & blogs
    • Developer newsletter
    • Videos
    • Github

    Get help

    • Customer service
    • Customer support
    • Regional contacts
    • Find a partner

    Join the Red Hat Developer program

    • Download Red Hat products and project builds, access support documentation, learning content, and more.
    • Explore the benefits

Upgrading to Red Hat JBoss Web Server 7: Key changes & impacts

September 28, 2026
Jeff Beck
Related topics:
JavaApplication modernizationRuntimes
Related products:
Red Hat JBoss Web Server

    Upgrading your web server layer can mean an afternoon of dependency updates or 3 months of effort troubleshooting breaking changes. With Red Hat JBoss Web Server (JWS) 7 now generally available—bringing Apache Tomcat 11.0.21, Jakarta EE 11, and Java 17—here is what actually impacts your builds and deployments.

    Release announcements tend to lead with the new specs, while the changes that really affect you end up in a section called "Deprecated features." The release notes already list everything, so let's talk instead about what these changes mean for your applications, your builds, and how you deploy.

    Apache Tomcat 11 and Jakarta EE 11

    JWS 7 is based on Apache Tomcat 11.0.21. That brings in the Jakarta EE 11 specs: Servlet 6.1, Server Pages 4.0, Expression Language (EL) 6.0, WebSocket 2.2, Authentication 3.1, and Annotations 3.0.

    Why this matters: This upgrade is smaller than it looks. The painful part of the Jakarta move was renaming every javax.* import to jakarta.*. That happened back in JWS 6.0. You already did it, and nothing gets renamed this time. If you've been putting this off because JWS 5 to 6 was painful, this one is different.

    What you get instead is a handful of long-standing gaps finally closed. Expression Language (EL) 6.0 fixes one that has quietly cost teams work. Records have no getters, so EL couldn't read them:

    public record Order(String id, BigDecimal total) { }
    <!-- Unresolved before EL 6.0. Works now. -->
    
    ${order.total}

    The new RecordELResolver handles this, and it's on by default. There's also an OptionalELResolver for unwrapping java.util.Optional. That one ships off by default, because turning it on would change how existing pages render.

    Servlet 6.1 adds conveniences in the same vein. The most useful are new sendRedirect overloads that let you pick the status code and keep your response body, instead of always sending a 302 with a container-generated one.

    Potential breaking changes

    While Jakarta EE 11 closes long-standing gaps, Tomcat 11 introduces behavioral changes worth reviewing before deployment.

    Parameter parsing now throws instead of returning null. When a request body is malformed or exceeds a size limit, Tomcat used to swallow the error and hand back null from getParameter(). You couldn't tell a missing field from a failed parse. Servlet 6.1 throws a runtime exception instead. If your code treats a null parameter as its error path, that path changed.

    Tomcat 11 removed FailedRequestFilter. It existed only as the workaround for the previous problem—it looked for the request attribute Tomcat set on a parse failure and returned a proper error response. Now that the API throws on its own, the filter is unnecessary and gone. Remove any reference to it from your web.xml, or the application won't start.

    maxParameterCount now defaults to 1,000, down from 10,000. On its own, this is a tuning change. Combined with the previous two changes, it's a trap: the threshold that triggers a parse failure is 10 times tighter, and what used to be a silent null is now a thrown exception. A bulk-edit screen or a large multi-select form that worked fine on JWS 6 can start failing. If you have big forms, set this explicitly on the connector instead of inheriting the new default.

    HTTP/2 server push is gone. newPushBuilder() now returns null, so an unguarded call is a NullPointerException (NPE). Push has been deprecated across the industry for years—browsers dropped support well before the spec did—and the replacement is a Link: </app.css>; rel=preload response header.

    Prometheus is no longer in the base image. Because JWS for OpenShift moved to Universal Base Image 9 (UBI 9), the base image no longer includes the bundled Prometheus binary from Red Hat Enterprise Linux (RHEL). If you've been pulling Prometheus from the base layer to monitor JWS or track performance, it won't be there after the upgrade. This is about where the Prometheus binary comes from, not about what JWS exposes—your metrics endpoints are unaffected. You'll need another source: the built-in monitoring stack if you're on OpenShift, or a separately deployed Prometheus if you're not.

    If your application sets cookie values directly, note that Tomcat 11 now retains quotes in quoted cookie values per RFC 6265. A cookie written as foo="bar" gives you "bar", not bar.

    Java 17 is the primary upgrade prerequisite

    Tomcat 11 requires Java 17 or later, making Java 17 the new baseline for JWS 7. Unlike JWS 6.1, Java 11 is no longer supported on any platform.

    Why this matters: If you're still on Java 11, this is 2 migrations, not 1. The Java Virtual Machine (JVM) half is usually the slow one. Two things break most often.

    The first is strong encapsulation. Java 16 started blocking reflective access into Java Development Kit (JDK) internals, and Java 17 removed the --illegal-access flag that let you turn the block off. Code that reaches into sun.misc or private JDK fields only logged a warning on Java 11. On Java 17 it throws InaccessibleObjectException. You can still open specific packages with --add-opens, but you have to know which ones, and each one becomes a flag you maintain.

    The second risk involves bytecode manipulation. Popular libraries like ASM, Byte Buddy, cglib, and Javassist—which sit under Hibernate, Spring, and Mockito—must understand Java 17's class file format to function. Older versions fail on classes they can't parse. That reaches further than you'd expect, because Hibernate, Spring, Mockito, and most Application Performance Monitoring (APM) agents sit on one of those libraries.

    What makes this deceptive is your own code compiles fine either way. The failures land at class-load time, or the first time a particular code path runs. APM agents are usually only enabled in staging and production, so a clean local build tells you very little.

    Do the JDK move first, as its own project.

    On modern platforms, JWS 7 certifies JDK 25 across Red Hat Enterprise Linux 9 and 10, as well as Windows Server 2019 and 2022. Two things to watch if a platform move is coming: RHEL 8 tops out at Java 21, and RHEL 10 starts there. Java 17 isn't certified on RHEL 10 at all.

    What's been removed

    The Java SecurityManager is gone. Tomcat 11 removed it, following the JDK's own deprecation for removal, and JWS 7 removes it with them. This is not a deprecation warning you can defer. If you start JWS with -Djava.security.manager and rely on catalina.policy to sandbox untrusted or semi-trusted applications sharing an instance, that mechanism no longer exists.

    Red Hat recommends achieving equivalent containment through container isolation—running a single web application per JWS instance in its own container or virtual machine (VM). That's the direction the industry moved for good reasons—the SecurityManager was a porous boundary with a real performance cost, and a container gives you a stronger one. But be clear about what the swap involves. Going from N applications in 1 JVM to N isolated instances changes your deployment topology, your resource footprint, and your operational surface. It's an architecture decision, not a configuration change, and it's the single item in this release most likely to need planning time.

    JWS for OpenShift images on UBI 8 are gone. From 7 onward, JWS for OpenShift images are built on UBI 9 only. The upside is the headline: UBI 9 images move from Technology Preview to full support, which is what makes JWS on OpenShift production-supportable under a subscription. If your platform or DevOps team owns base image updates and scanning policies, flag this change to them early so your pipeline is ready before you start code migration.

    A note on Spring Boot 4

    While deploying Spring Boot 4 to JWS 7 is technically possible thanks to Tomcat 11, note that this configuration falls outside official Red Hat support. If you choose this path, your team will be responsible for ongoing integration testing.

    Before you upgrade

    Three things to confirm before you schedule the work:

    • Are you on Java 17 or later? If not, that's the first project, not a step in this one.
    • Do you depend on the SecurityManager? Search your startup scripts for java.security.manager and check whether catalina.policy is doing real work. If it is, you need a topology plan.
    • Do your images build FROM UBI 8? Update the base image and verify your scanning and build hosts follow.

    For the full list of changes, resolved issues, and the complete operating system/JVM certification matrix, see the Red Hat JBoss Web Server 7 release notes.

    Related Posts

    • Deploy and customize JBoss Web Server on Red Hat OpenShift

    • How to stay informed with Red Hat status notifications

    • Log4Shell: The vulnerability that shook the world of software development

    • Build OpenJDK container images locally using the standalone S2I tool

    • Temurin JDK 25 now available in Red Hat Customer Portal

    • Get started with the JBoss Web Server collection

    Recent Posts

    • Upgrading to Red Hat JBoss Web Server 7: Key changes & impacts

    • How to rank fraud detection models using custom cost metrics

    • Run decision models on vLLM and Red Hat AI using DiffusionGemma

    • Managing edge solutions with Red Hat: A layered approach

    • Build golden path CI/CD workflows in Red Hat Developer Hub

    What’s up next?

    Enterprise Java Patterns ebook tile card

    Enterprise Java Design Patterns in the Cloud Native Era

    Markus Eisele
    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Platforms

    • Red Hat AI
    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform
    • See all products

    Build

    • Developer Sandbox
    • Developer tools
    • Interactive tutorials
    • API catalog

    Quicklinks

    • Learning resources
    • E-books
    • Cheat sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site status dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit
    © 2026 Red Hat

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility
    Ask AI