{"id":7880,"date":"2026-05-14T08:34:32","date_gmt":"2026-05-14T12:34:32","guid":{"rendered":"https:\/\/blogs.sw.siemens.com\/polarion\/?p=7880"},"modified":"2026-05-14T08:34:35","modified_gmt":"2026-05-14T12:34:35","slug":"polarion-2606-tomcat-11-custom-extension-update","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/polarion\/polarion-2606-tomcat-11-custom-extension-update\/","title":{"rendered":"Prepare Your Extensions for Polarion 2606"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Polarion 2606 Upgrade: Prepare Your Extensions for Tomcat 11 and Jakarta EE 11<\/h2>\n\n\n\n<p>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 <code>javax.*<\/code> namespace to the newer <code>jakarta.*<\/code> 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.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"710\" src=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2026\/05\/tomcat-1024x710.jpg\" alt=\"Get Your Polarion Extensions Ready for the 2606 Upgrade to Tomcat 11 &amp; Jakarta EE 1\" class=\"wp-image-7904\" srcset=\"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2026\/05\/tomcat-1024x710.jpg 1024w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2026\/05\/tomcat-600x416.jpg 600w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2026\/05\/tomcat-768x533.jpg 768w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2026\/05\/tomcat-900x624.jpg 900w, https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2026\/05\/tomcat.jpg 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Get Your Polarion Extensions Ready for the 2606 Upgrade to Tomcat 11 &amp; Jakarta EE 1<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What changed?<\/h2>\n\n\n\n<p>Apache Tomcat 11 supports Jakarta EE 11 technologies, including <strong>Jakarta Servlet 6.1<\/strong>. (<a href=\"https:\/\/tomcat.apache.org\/migration-11.0.html\" target=\"_blank\" rel=\"noopener\">tomcat.apache.org<\/a>)<\/p>\n\n\n\n<p>The most visible change for custom extensions is the package namespace migration from the legacy Java EE namespace:<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<pre class=\"wp-block-code\"><code><code>javax.*<\/code><\/code><\/pre>\n<\/div><\/div>\n\n\n\n<p>to the Jakarta EE namespace:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>jakarta.*<\/code><\/code><\/pre>\n\n\n\n<p>For example, servlet-related imports such as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>javax.servlet.*\njavax.servlet.http.*<\/code><\/code><\/pre>\n\n\n\n<p>must be changed to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>jakarta.servlet.*\njakarta.servlet.http.*<\/code><\/code><\/pre>\n\n\n\n<p>Extensions that still reference the old <code>javax.servlet<\/code> APIs will fail to compile against the Polarion 2606 development environment and fail to load at runtime. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Who is affected?<\/strong><\/h2>\n\n\n\n<p>You are affected if your custom Polarion extension is using imports and classes from javax namespace, e.g.:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>javax.servlet\njavax.servlet.http\njavax.servlet.annotation\njavax.websocket\njavax.annotation\njavax.el\njavax.servlet.jsp<\/code><\/pre>\n\n\n\n<p>You should also check:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>web.xml<\/li>\n\n\n\n<li>JSP files<\/li>\n\n\n\n<li>tag libraries<\/li>\n\n\n\n<li>servlet filters<\/li>\n\n\n\n<li>servlet listeners<\/li>\n\n\n\n<li>bundled third-party JAR files<\/li>\n\n\n\n<li>build files such as Maven, Gradle, or Ant configurations<\/li>\n<\/ul>\n\n\n\n<p>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. (<a href=\"https:\/\/github.com\/apache\/tomcat-jakartaee-migration\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Required action: update Java imports<\/strong><\/h2>\n\n\n\n<p>Update all servlet-related imports from <code>javax.*<\/code> to <code>jakarta.*<\/code>.<\/p>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Before\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\n\n\/\/ After\nimport jakarta.servlet.http.HttpServlet;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\n<\/code><\/pre>\n\n\n\n<p>Also update your build dependencies. <\/p>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;dependency&gt;\n    &lt;groupId&gt;jakarta.servlet&lt;\/groupId&gt;\n    &lt;artifactId&gt;jakarta.servlet-api&lt;\/artifactId&gt;\n    &lt;version&gt;6.1.0&lt;\/version&gt;\n    &lt;scope&gt;provided&lt;\/scope&gt;\n&lt;\/dependency&gt;\n<\/code><\/pre>\n\n\n\n<p>Use the provided scope where appropriate, because the servlet API is provided by the runtime container.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Required action: update web.xml<\/strong><\/h2>\n\n\n\n<p>If your extension contains a <code>web.xml<\/code> deployment descriptor, update it to the Servlet 6.1 schema.<\/p>\n\n\n\n<p>Replace the existing <code>&lt;web-app&gt;<\/code> declaration with the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;web-app xmlns=\"https:\/\/jakarta.ee\/xml\/ns\/jakartaee\"\n         xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n         xsi:schemaLocation=\"https:\/\/jakarta.ee\/xml\/ns\/jakartaee\n                             https:\/\/jakarta.ee\/xml\/ns\/jakartaee\/web-app_6_1.xsd\"\n         version=\"6.1\"&gt;\n\n    &lt;!-- Your configuration elements go here --&gt;\n\n&lt;\/web-app&gt;\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Check bundled libraries<\/strong><\/h2>\n\n\n\n<p>Updating your own source code may not be enough.<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>Pay special attention to libraries that provide:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>servlet filters<\/li>\n\n\n\n<li>authentication integrations<\/li>\n\n\n\n<li>REST endpoints<\/li>\n\n\n\n<li>embedded web frameworks<\/li>\n\n\n\n<li>JSP\/taglib support<\/li>\n\n\n\n<li>WebSocket support<\/li>\n<\/ul>\n\n\n\n<p>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.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Recommended migration steps<\/strong><\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Search your extension source code and resources for <code>javax.<\/code> references.<\/li>\n\n\n\n<li>Replace Java EE web API imports with the corresponding <code>jakarta.*<\/code> imports.<\/li>\n\n\n\n<li>Update build dependencies to Jakarta EE 11-compatible APIs.<\/li>\n\n\n\n<li>Update all <code>web.xml<\/code> files to Servlet 6.1.<\/li>\n\n\n\n<li>Review bundled third-party libraries for old <code>javax.*<\/code> dependencies.<\/li>\n\n\n\n<li>Rebuild the extension.<\/li>\n\n\n\n<li>Test the extension with Polarion 2606 before deploying it to production.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Additional resources<\/strong><\/h2>\n\n\n\n<p>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. (<a href=\"https:\/\/tomcat.apache.org\/migration-11.0.html\" target=\"_blank\" rel=\"noopener\">tomcat.apache.org<\/a>)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Summary<\/strong><\/h2>\n\n\n\n<p>The Tomcat 11 upgrade in Polarion 2606 requires custom web extensions to move from the legacy <code>javax.* <\/code>Java EE APIs to the newer <code>jakarta.*<\/code> Jakarta EE APIs.<\/p>\n\n\n\n<p>For most extensions, the key work is straightforward:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>update Java imports<\/li>\n\n\n\n<li>update build dependencies<\/li>\n\n\n\n<li>update <code>web.xml<\/code><\/li>\n\n\n\n<li>check third-party libraries<\/li>\n\n\n\n<li>rebuild and test<\/li>\n<\/ul>\n\n\n\n<p>Extensions that are not updated will fail to compile or fail to load in Polarion 2606 and future versions.<\/p>\n\n\n\n<p>To protect the system from incompatible extensions, Polarion will also check extensions located in the <code>\/extensions<\/code> folder. If Polarion detects an extension that still uses incompatible legacy <code>javax.*<\/code> 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.<\/p>\n\n\n\n<p>Before upgrading to Polarion 2606, review all custom extensions deployed in the <code>\/extensions<\/code> folder and make sure they are compatible with Tomcat 11 and Jakarta EE 11.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Polarion 2606 Upgrade: Prepare Your Extensions for Tomcat 11 and Jakarta EE 11 Polarion 2606 includes an upgrade from Apache&#8230;<\/p>\n","protected":false},"author":54129,"featured_media":7904,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1],"tags":[],"industry":[],"product":[],"coauthors":[638],"class_list":["post-7880","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"featured_image_url":"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/4\/2026\/05\/tomcat.jpg","_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/7880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/users\/54129"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/comments?post=7880"}],"version-history":[{"count":5,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/7880\/revisions"}],"predecessor-version":[{"id":7913,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/7880\/revisions\/7913"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/media\/7904"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/media?parent=7880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/categories?post=7880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/tags?post=7880"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/industry?post=7880"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/product?post=7880"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/coauthors?post=7880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}