You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2022/02/07 20:39:03 UTC

[tomcat] 01/02: Adds "jakarta.annotation" to filter

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 10.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 8fc62c4a7b64843c26505bece0b0b4b8b06075e4
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Fri Jan 28 09:33:04 2022 +0100

    Adds "jakarta.annotation" to filter
    
    Some users from mistakenly add `jakarta.annotation-api` to their
    applications, which prevents Tomcat from finding @Resource and similar
    annotations on the servlets.
    
    To prevent this "jakarta.annotation" should also be always loaded from
    the common classloader.
---
 java/org/apache/catalina/loader/WebappClassLoaderBase.java | 6 ++++--
 test/org/apache/catalina/loader/TestWebappClassLoader.java | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/java/org/apache/catalina/loader/WebappClassLoaderBase.java b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
index 628d457..00e4fc3 100644
--- a/java/org/apache/catalina/loader/WebappClassLoaderBase.java
+++ b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
@@ -2649,7 +2649,8 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
                 if (name.startsWith("servlet.jsp.jstl.", 8)) {
                     return false;
                 }
-                if (name.startsWith("el.", 8) ||
+                if (name.startsWith("annotation.", 8) ||
+                    name.startsWith("el.", 8) ||
                     name.startsWith("servlet.", 8) ||
                     name.startsWith("websocket.", 8) ||
                     name.startsWith("security.auth.message.", 8)) {
@@ -2660,7 +2661,8 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
                 if (name.startsWith("servlet/jsp/jstl/", 8)) {
                     return false;
                 }
-                if (name.startsWith("el/", 8) ||
+                if (name.startsWith("annotation/", 8) ||
+                    name.startsWith("el/", 8) ||
                     name.startsWith("servlet/", 8) ||
                     name.startsWith("websocket/", 8) ||
                     name.startsWith("security/auth/message/", 8)) {
diff --git a/test/org/apache/catalina/loader/TestWebappClassLoader.java b/test/org/apache/catalina/loader/TestWebappClassLoader.java
index d320984..11b53ab 100644
--- a/test/org/apache/catalina/loader/TestWebappClassLoader.java
+++ b/test/org/apache/catalina/loader/TestWebappClassLoader.java
@@ -99,6 +99,7 @@ public class TestWebappClassLoader extends TomcatBaseTest {
             "org.apache.juli",
             "org.apache.naming",
             "org.apache.tomcat",
+            "jakarta.annotation",
             "jakarta.el",
             "jakarta.servlet",
             "jakarta.websocket",

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org