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:53:30 UTC

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

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

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

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

    Adds "javax.annotation" to filter
    
    Some users from mistakenly add `javax.annotation-api` to their
    applications, which prevents Tomcat from finding @Resource and similar
    annotations on the servlets.
    
    To prevent this "javax.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 548fabe..76a53b7 100644
--- a/java/org/apache/catalina/loader/WebappClassLoaderBase.java
+++ b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
@@ -2611,7 +2611,8 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
                 if (name.startsWith("servlet.jsp.jstl.", 6)) {
                     return false;
                 }
-                if (name.startsWith("el.", 6) ||
+                if (name.startsWith("annotation.", 6) ||
+                    name.startsWith("el.", 6) ||
                     name.startsWith("servlet.", 6) ||
                     name.startsWith("websocket.", 6) ||
                     name.startsWith("security.auth.message.", 6)) {
@@ -2622,7 +2623,8 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
                 if (name.startsWith("servlet/jsp/jstl/", 6)) {
                     return false;
                 }
-                if (name.startsWith("el/", 6) ||
+                if (name.startsWith("annotation/", 6) ||
+                    name.startsWith("el/", 6) ||
                     name.startsWith("servlet/", 6) ||
                     name.startsWith("websocket/", 6) ||
                     name.startsWith("security/auth/message/", 6)) {
diff --git a/test/org/apache/catalina/loader/TestWebappClassLoader.java b/test/org/apache/catalina/loader/TestWebappClassLoader.java
index a81d4c6..b4c2b87 100644
--- a/test/org/apache/catalina/loader/TestWebappClassLoader.java
+++ b/test/org/apache/catalina/loader/TestWebappClassLoader.java
@@ -98,6 +98,7 @@ public class TestWebappClassLoader extends TomcatBaseTest {
             "org.apache.juli",
             "org.apache.naming",
             "org.apache.tomcat",
+            "javax.annotation",
             "javax.el",
             "javax.servlet",
             "javax.websocket",

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