You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2020/04/02 12:40:01 UTC
[tomee] 01/05: TOMEE-2785 add basic config to allow classes to skip
to be configured with a system property
This is an automated email from the ASF dual-hosted git repository.
jgallimore pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee.git
commit 2268fe8c852c0c8b364a6df488309359c22c6d4b
Author: Jonathan Gallimore <jo...@jrg.me.uk>
AuthorDate: Tue Mar 24 15:02:01 2020 +0000
TOMEE-2785 add basic config to allow classes to skip to be configured with a system property
---
.../apache/tomee/catalina/TomEEWebappClassLoader.java | 17 ++++++++++++++++-
.../org/apache/tomee/catalina/TomEEWebappLoader.java | 9 ++++-----
.../tomee/catalina/WebAppFirstEarClassLoader.java | 5 -----
3 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
index 1a1208a..1ddf303 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
@@ -81,6 +81,7 @@ public class TomEEWebappClassLoader extends ParallelWebappClassLoader {
}
public static final String CLASS_EXTENSION = ".class";
+ protected String[] forceSkip;
private boolean restarting;
private boolean forceStopPhase = Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.webappclassloader.force-stop-phase", "false"));
@@ -164,7 +165,7 @@ public class TomEEWebappClassLoader extends ParallelWebappClassLoader {
}
// avoid to redefine classes from server in this classloader is it not already loaded
- if (URLClassLoaderFirst.shouldDelegateToTheContainer(this, name)) { // dynamic validation handling overriding
+ if (URLClassLoaderFirst.shouldDelegateToTheContainer(this, name) || shouldForceLoadFromTheContainer(name)) { // dynamic validation handling overriding
try {
return OpenEJB.class.getClassLoader().loadClass(name); // we could use containerClassLoader but this is server loader so cut it even more
} catch (final ClassNotFoundException e) {
@@ -209,6 +210,16 @@ public class TomEEWebappClassLoader extends ParallelWebappClassLoader {
}
}
+ private boolean shouldForceLoadFromTheContainer(final String name) {
+ for (final String p : forceSkip) {
+ if (name.startsWith(p)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
private Class<?> loadWithDelegate(final boolean delegate, final boolean resolve, final String name) throws ClassNotFoundException {
setDelegate(delegate);
try {
@@ -549,6 +560,10 @@ public class TomEEWebappClassLoader extends ParallelWebappClassLoader {
this.webResourceRoot = webResourceRoot;
}
+ void setForceSkip(final String[] forceSkip) {
+ this.forceSkip = forceSkip;
+ }
+
private static class NoClassClassLoader extends ClassLoader {
private static final NoClassClassLoader INSTANCE = new NoClassClassLoader();
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java
index 956e055..bb19d55 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappLoader.java
@@ -39,11 +39,10 @@ import java.io.File;
* </Context>
*/
public class TomEEWebappLoader extends WebappLoader {
- public static final boolean SKIP_BACKGROUND_PROCESS = "true".equals(SystemInstance.get().getProperty("tomee.classloader.skip-background-process", "false"));
+ private static final boolean SKIP_BACKGROUND_PROCESS = "true".equals(SystemInstance.get().getProperty("tomee.classloader.skip-background-process", "false"));
+ private static final String FORCE_SKIP = SystemInstance.get().getProperty("tomee.webapp.classloader.forced-skip", "");
private volatile ClassLoader loader;
- private String forceSkip;
- private String[] forceSkipRuntime;
@Override
public void backgroundProcess() {
@@ -113,8 +112,8 @@ public class TomEEWebappLoader extends WebappLoader {
TomEEWebappClassLoader.cleanContext();
}
- if (forceSkip != null && WebAppFirstEarClassLoader.class.isInstance(getClassLoader())) {
- WebAppFirstEarClassLoader.class.cast(getClassLoader()).setForceSkip(forceSkip.split(" *, *"));
+ if (FORCE_SKIP != null && TomEEWebappClassLoader.class.isInstance(getClassLoader())) {
+ TomEEWebappClassLoader.class.cast(getClassLoader()).setForceSkip(FORCE_SKIP.split(" *, *"));
}
}
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebAppFirstEarClassLoader.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebAppFirstEarClassLoader.java
index 327f58d..63f24bb 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebAppFirstEarClassLoader.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/WebAppFirstEarClassLoader.java
@@ -24,8 +24,6 @@ public class WebAppFirstEarClassLoader extends TomEEWebappClassLoader {
ClassLoader.registerAsParallelCapable();
}
- private String[] forceSkip;
-
public WebAppFirstEarClassLoader() {
super();
}
@@ -56,7 +54,4 @@ public class WebAppFirstEarClassLoader extends TomEEWebappClassLoader {
return false;
}
- void setForceSkip(final String[] forceSkip) {
- this.forceSkip = forceSkip;
- }
}