Prepare Your Extensions for Polarion 2606
Polarion 2606 Upgrade: Prepare Your Extensions for Tomcat 11 and Jakarta EE 11
Polarion 2606 includes an upgrade from Apache Tomcat 9 to Apache Tomcat 11 as part of our continued platform modernization. Tomcat 11 aligns with Jakarta EE 11, where Java web APIs have moved from the legacy javax.* namespace to the newer jakarta.* namespace. Customers and partners who maintain custom Polarion extensions using Java Servlets or related web APIs should review and update those extensions to ensure compatibility with Polarion 2606.

What changed?
Apache Tomcat 11 supports Jakarta EE 11 technologies, including Jakarta Servlet 6.1. (tomcat.apache.org)
The most visible change for custom extensions is the package namespace migration from the legacy Java EE namespace:
javax.*
to the Jakarta EE namespace:
jakarta.*
For example, servlet-related imports such as:
javax.servlet.*
javax.servlet.http.*
must be changed to:
jakarta.servlet.*
jakarta.servlet.http.*
Extensions that still reference the old javax.servlet APIs will fail to compile against the Polarion 2606 development environment and fail to load at runtime.
Who is affected?
You are affected if your custom Polarion extension is using imports and classes from javax namespace, e.g.:
javax.servlet
javax.servlet.http
javax.servlet.annotation
javax.websocket
javax.annotation
javax.el
javax.servlet.jsp
You should also check:
- web.xml
- JSP files
- tag libraries
- servlet filters
- servlet listeners
- bundled third-party JAR files
- build files such as Maven, Gradle, or Ant configurations
The Apache Tomcat migration tool can help rename Java EE 8 javax.* package references to Jakarta equivalents in classes, configuration files, JSPs, TLDs, and string constants, but it does not remove the need to review, rebuild, and test your extension. (GitHub)
Required action: update Java imports
Update all servlet-related imports from javax.* to jakarta.*.
Example:
// Before
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// After
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
Also update your build dependencies.
Example:
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.1.0</version>
<scope>provided</scope>
</dependency>
Use the provided scope where appropriate, because the servlet API is provided by the runtime container.
Required action: update web.xml
If your extension contains a web.xml deployment descriptor, update it to the Servlet 6.1 schema.
Replace the existing <web-app> declaration with the following:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
version="6.1">
<!-- Your configuration elements go here -->
</web-app>
Check bundled libraries
Updating your own source code may not be enough.
If your extension bundles third-party libraries that still depend on javax.servlet or other old Java EE APIs, those libraries may also need to be updated to Jakarta-compatible versions.
Pay special attention to libraries that provide:
- servlet filters
- authentication integrations
- REST endpoints
- embedded web frameworks
- JSP/taglib support
- WebSocket support
You may need to update the library to the latest version which is compatible with Jakarta EE or you need to patch library if license allows it. If source code of library or extensions is not available, you can leverage migration tool which can help with bytecode transformation of compiled code to be compatible with Jakarta EE.
Recommended migration steps
- Search your extension source code and resources for
javax.references. - Replace Java EE web API imports with the corresponding
jakarta.*imports. - Update build dependencies to Jakarta EE 11-compatible APIs.
- Update all
web.xmlfiles to Servlet 6.1. - Review bundled third-party libraries for old
javax.*dependencies. - Rebuild the extension.
- Test the extension with Polarion 2606 before deploying it to production.
Additional resources
For more details, see the Apache Tomcat 11 migration guide, the Jakarta Servlet 6.1 specification page, the Jakarta EE XML schema reference, and the Apache Tomcat migration tool for Jakarta EE. (tomcat.apache.org)
Summary
The Tomcat 11 upgrade in Polarion 2606 requires custom web extensions to move from the legacy javax.* Java EE APIs to the newer jakarta.* Jakarta EE APIs.
For most extensions, the key work is straightforward:
- update Java imports
- update build dependencies
- update
web.xml - check third-party libraries
- rebuild and test
Extensions that are not updated will fail to compile or fail to load in Polarion 2606 and future versions.
To protect the system from incompatible extensions, Polarion will also check extensions located in the /extensions folder. If Polarion detects an extension that still uses incompatible legacy javax.* servlet APIs, it will stop the update process. The same check is performed during startup, and Polarion will stop startup if such an incompatible extension is detected.
Before upgrading to Polarion 2606, review all custom extensions deployed in the /extensions folder and make sure they are compatible with Tomcat 11 and Jakarta EE 11.


