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 2019/07/10 12:00:39 UTC
[tomcat] branch 7.0.x updated: Align AsyncContextImpl with 8.5.x
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/7.0.x by this push:
new c2b6147 Align AsyncContextImpl with 8.5.x
c2b6147 is described below
commit c2b6147a6d22a55618b2db88bfe2f732fc8663d9
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Jul 10 13:00:30 2019 +0100
Align AsyncContextImpl with 8.5.x
Spacing, improved i18n, simplify code, remove anonymous inner classes,
obtain InstanceManager directly from the Context
---
.../org/apache/catalina/core/AsyncContextImpl.java | 110 ++++++++++-----------
.../apache/catalina/core/LocalStrings.properties | 17 +---
.../catalina/core/LocalStrings_es.properties | 12 ---
.../catalina/core/LocalStrings_fr.properties | 27 +++--
.../catalina/core/LocalStrings_ja.properties | 12 ---
.../catalina/security/SecurityClassLoad.java | 63 +++++-------
6 files changed, 90 insertions(+), 151 deletions(-)
diff --git a/java/org/apache/catalina/core/AsyncContextImpl.java b/java/org/apache/catalina/core/AsyncContextImpl.java
index 15c6610..bba05e9 100644
--- a/java/org/apache/catalina/core/AsyncContextImpl.java
+++ b/java/org/apache/catalina/core/AsyncContextImpl.java
@@ -21,9 +21,7 @@ import java.lang.reflect.InvocationTargetException;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.naming.NamingException;
@@ -50,16 +48,11 @@ import org.apache.coyote.AsyncContextCallback;
import org.apache.coyote.RequestInfo;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.InstanceManager;
import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.res.StringManager;
import org.apache.tomcat.util.security.PrivilegedGetTccl;
import org.apache.tomcat.util.security.PrivilegedSetTccl;
-/**
- *
- * @author fhanik
- *
- */
+
public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
private static final Log log = LogFactory.getLog(AsyncContextImpl.class);
@@ -78,14 +71,14 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
private volatile ServletRequest servletRequest = null;
private volatile ServletResponse servletResponse = null;
- private List<AsyncListenerWrapper> listeners = new ArrayList<AsyncListenerWrapper>();
+ private final List<AsyncListenerWrapper> listeners = new ArrayList<AsyncListenerWrapper>();
private boolean hasOriginalRequestAndResponse = true;
private volatile Runnable dispatch = null;
private Context context = null;
+ // Default of 30000 (30s) is set by the connector
private long timeout = -1;
private AsyncEvent event = null;
- private Request request;
- private volatile InstanceManager instanceManager;
+ private volatile Request request;
public AsyncContextImpl(Request request) {
if (log.isDebugEnabled()) {
@@ -105,8 +98,7 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
@Override
public void fireOnComplete() {
- List<AsyncListenerWrapper> listenersCopy =
- new ArrayList<AsyncListenerWrapper>();
+ List<AsyncListenerWrapper> listenersCopy = new ArrayList<AsyncListenerWrapper>();
listenersCopy.addAll(listeners);
ClassLoader oldCL;
@@ -130,8 +122,8 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
listener.fireOnComplete(event);
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
- log.warn("onComplete() failed for listener of type [" +
- listener.getClass().getName() + "]", t);
+ log.warn(sm.getString("asyncContextImpl.onCompleteError",
+ listener.getClass().getName()), t);
}
}
} finally {
@@ -166,18 +158,17 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
listener.fireOnTimeout(event);
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
- log.warn("onTimeout() failed for listener of type [" +
- listener.getClass().getName() + "]", t);
+ log.warn(sm.getString("asyncContextImpl.onTimeoutError",
+ listener.getClass().getName()), t);
}
}
request.getCoyoteRequest().action(
ActionCode.ASYNC_IS_TIMINGOUT, result);
- return !result.get();
} finally {
Thread.currentThread().setContextClassLoader(oldCL);
}
}
- return true;
+ return !result.get();
}
@Override
@@ -241,20 +232,8 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
// request/response and that in turn may trigger recycling of this
// object before the in-progress count can be decremented
final Context context = this.context;
- Runnable run = new Runnable() {
- @Override
- public void run() {
- request.getCoyoteRequest().action(ActionCode.ASYNC_DISPATCHED, null);
- try {
- applicationDispatcher.dispatch(servletRequest, servletResponse);
- }catch (Exception x) {
- //log.error("Async.dispatch",x);
- throw new RuntimeException(x);
- }
- }
- };
-
- this.dispatch = run;
+ this.dispatch = new AsyncRunnable(
+ request, applicationDispatcher, servletRequest, servletResponse);
this.request.getCoyoteRequest().action(ActionCode.ASYNC_DISPATCH, null);
clearServletRequestResponse();
context.decrementInProgressAsyncCount();
@@ -317,8 +296,8 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
check();
T listener = null;
try {
- listener = (T) getInstanceManager().newInstance(clazz.getName(),
- clazz.getClassLoader());
+ listener = (T) context.getInstanceManager().newInstance(
+ clazz.getName(), clazz.getClassLoader());
} catch (InstantiationException e) {
ServletException se = new ServletException(e);
throw se;
@@ -351,7 +330,6 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
dispatch = null;
event = null;
hasOriginalRequestAndResponse = true;
- instanceManager = null;
listeners.clear();
request = null;
clearServletRequestResponse();
@@ -384,8 +362,7 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
this.hasOriginalRequestAndResponse = originalRequestResponse;
this.event = new AsyncEvent(this, request, response);
- List<AsyncListenerWrapper> listenersCopy =
- new ArrayList<AsyncListenerWrapper>();
+ List<AsyncListenerWrapper> listenersCopy = new ArrayList<AsyncListenerWrapper>();
listenersCopy.addAll(listeners);
listeners.clear();
for (AsyncListenerWrapper listener : listenersCopy) {
@@ -393,8 +370,8 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
listener.fireOnStartAsync(event);
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
- log.warn("onStartAsync() failed for listener of type [" +
- listener.getClass().getName() + "]", t);
+ log.warn(sm.getString("asyncContextImpl.onStartAsyncError",
+ listener.getClass().getName()), t);
}
}
}
@@ -464,16 +441,15 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
if (fireOnError) {
AsyncEvent errorEvent = new AsyncEvent(event.getAsyncContext(),
event.getSuppliedRequest(), event.getSuppliedResponse(), t);
- List<AsyncListenerWrapper> listenersCopy =
- new ArrayList<AsyncListenerWrapper>();
+ List<AsyncListenerWrapper> listenersCopy = new ArrayList<AsyncListenerWrapper>();
listenersCopy.addAll(listeners);
for (AsyncListenerWrapper listener : listenersCopy) {
try {
listener.fireOnError(errorEvent);
} catch (Throwable t2) {
ExceptionUtils.handleThrowable(t2);
- log.warn("onError() failed for listener of type [" +
- listener.getClass().getName() + "]", t2);
+ log.warn(sm.getString("asyncContextImpl.onErrorError",
+ listener.getClass().getName()), t2);
}
}
}
@@ -564,20 +540,6 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
}
}
- private InstanceManager getInstanceManager() {
- if (instanceManager == null) {
- if (context instanceof StandardContext) {
- instanceManager = ((StandardContext)context).getInstanceManager();
- } else {
- instanceManager = new DefaultInstanceManager(null,
- new HashMap<String, Map<String, String>>(),
- context,
- getClass().getClassLoader());
- }
- }
- return instanceManager;
- }
-
private void check() {
if (request == null) {
// AsyncContext has been recycled and should not be being used
@@ -585,14 +547,15 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
"asyncContextImpl.requestEnded"));
}
}
+
private static class DebugException extends Exception {
private static final long serialVersionUID = 1L;
}
private static class RunnableWrapper implements Runnable {
- private Runnable wrapped = null;
- private Context context = null;
+ private final Runnable wrapped;
+ private final Context context;
public RunnableWrapper(Runnable wrapped, Context ctxt) {
this.wrapped = wrapped;
@@ -629,6 +592,33 @@ public class AsyncContextImpl implements AsyncContext, AsyncContextCallback {
}
}
}
+ }
+
+
+ private static class AsyncRunnable implements Runnable {
+
+ private final AsyncDispatcher applicationDispatcher;
+ private final Request request;
+ private final ServletRequest servletRequest;
+ private final ServletResponse servletResponse;
+
+ public AsyncRunnable(Request request, AsyncDispatcher applicationDispatcher,
+ ServletRequest servletRequest, ServletResponse servletResponse) {
+ this.request = request;
+ this.applicationDispatcher = applicationDispatcher;
+ this.servletRequest = servletRequest;
+ this.servletResponse = servletResponse;
+ }
+
+ @Override
+ public void run() {
+ request.getCoyoteRequest().action(ActionCode.ASYNC_DISPATCHED, null);
+ try {
+ applicationDispatcher.dispatch(servletRequest, servletResponse);
+ } catch (Exception e) {
+ throw new RuntimeException(sm.getString("asyncContextImpl.asyncDispachError"), e);
+ }
+ }
}
}
diff --git a/java/org/apache/catalina/core/LocalStrings.properties b/java/org/apache/catalina/core/LocalStrings.properties
index e92247a..f788a76 100644
--- a/java/org/apache/catalina/core/LocalStrings.properties
+++ b/java/org/apache/catalina/core/LocalStrings.properties
@@ -92,8 +92,13 @@ aprListener.tooLateForSSLEngine=Cannot setSSLEngine: SSL has already been initia
aprListener.tooLateForSSLRandomSeed=Cannot setSSLRandomSeed: SSL has already been initialized
aprListener.wrongFIPSMode=Unexpected value of FIPSMode option of AprLifecycleListener: "{0}"
+asyncContextImpl.asyncDispachError=Error during asynchronous dispatch
asyncContextImpl.dispatchingStarted=Asynchronous dispatch operation has already been called. Additional asynchronous dispatch operation within the same asynchronous cycle is not allowed.
asyncContextImpl.noAsyncDispatcher=The dispatcher returned from the ServletContext does not support asynchronous dispatching
+asyncContextImpl.onCompleteError=onComplete() call failed for listener of type [{0}]
+asyncContextImpl.onErrorError=onError() call failed for listener of type [{0}]
+asyncContextImpl.onStartAsyncError=onStartAsync() call failed for listener of type [{0}]
+asyncContextImpl.onTimeoutError=onTimeout() call failed for listener of type [{0}]
asyncContextImpl.request.ise=It is illegal to call getRequest() after complete() or any of the dispatch() methods has been called
asyncContextImpl.requestEnded=The request associated with the AsyncContext has already completed processing.
asyncContextImpl.response.ise=It is illegal to call getResponse() after complete() or any of the dispatch() methods has been called
@@ -116,21 +121,9 @@ defaultInstanceManager.restrictedListenersResource=Restricted listeners property
defaultInstanceManager.restrictedServletsResource=Restricted servlets property file not found [{0}]
defaultInstanceManager.restrictedWrongValue=Wrong value in restricted classes property file [{0}] for class name [{1}]. Expected value: [restricted], actual value: [{2}]
-fastEngineMapper.alreadyStarted=FastEngineMapper {0} has already been started
-fastEngineMapper.notStarted=FastEngineMapper {0} has not yet been started
-
filterChain.filter=Filter execution threw an exception
filterChain.servlet=Servlet execution threw an exception
-httpContextMapper.container=This container is not a StandardContext
-
-httpEngineMapper.container=This container is not a StandardEngine
-
-httpHostMapper.container=This container is not a StandardHost
-
-interceptorValve.alreadyStarted=InterceptorValve has already been started
-interceptorValve.notStarted=InterceptorValve has not yet been started
-
jreLeakListener.authPolicyFail=Error whilst attempting to prevent memory leak in javax.security.auth.Policy class
jreLeakListener.classToInitializeFail=Failed to load class {0} during Tomcat start to prevent possible memory leaks.
jreLeakListener.gcDaemonFail=Failed to trigger creation of the GC Daemon thread during Tomcat start to prevent possible memory leaks. This is expected on non-Sun JVMs.
diff --git a/java/org/apache/catalina/core/LocalStrings_es.properties b/java/org/apache/catalina/core/LocalStrings_es.properties
index 089e4c8..13dcc69 100644
--- a/java/org/apache/catalina/core/LocalStrings_es.properties
+++ b/java/org/apache/catalina/core/LocalStrings_es.properties
@@ -85,21 +85,9 @@ defaultInstanceManager.restrictedFiltersResource=No se ha hallado el fichero de
defaultInstanceManager.restrictedListenersResources=No se ha hallado el fichero de propiedades restringidas de escuchadores
defaultInstanceManager.restrictedServletsResource=No se ha hallado el fichero de propiedades restringidas de servlets
-fastEngineMapper.alreadyStarted=Ya se ha arrancado el FastEngineMapper {0}
-fastEngineMapper.notStarted=No se ha arrancado aún el FastEngineMapper {0}
-
filterChain.filter=La ejecución del Filtro lanzó una excepción
filterChain.servlet=La ejecución del Servlet lanzó una excepción
-httpContextMapper.container=Este Contenedor no es un StandardContext
-
-httpEngineMapper.container=Este Contenedor no es un StandardEngine
-
-httpHostMapper.container=Esta Contenedor no es una StandardHost
-
-interceptorValve.alreadyStarted=Ya ha sido arrancada la InterceptorValve
-interceptorValve.notStarted=Aún no ha sido arrancada la InterceptorValve
-
jreLeakListener.authPolicyFail=Error mientras intentaba prevenir fallos de memoria en javax.security.auth.Policy class
jreLeakListener.gcDaemonFail=No pude disparar la creación del hilo Daemon GC durante el arranque de Tomcat para prevenir posibles fallos de memoria. Esto es lo esperado en JVMs no Sun.
jreLeakListener.jarUrlConnCacheFail=No pude desactivar la caché de conexión URL de Jar por defecto
diff --git a/java/org/apache/catalina/core/LocalStrings_fr.properties b/java/org/apache/catalina/core/LocalStrings_fr.properties
index 1807100..089ed31 100644
--- a/java/org/apache/catalina/core/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/core/LocalStrings_fr.properties
@@ -31,24 +31,23 @@ applicationRequest.badRequest=La requête n''est pas une "javax.servlet.ServletR
applicationResponse.badParent=Impossible de trouver une implémentation réponse parente (parent response)
applicationResponse.badResponse=La réponse n''est pas une "javax.servlet.ServletResponseWrapper"
+asyncContextImpl.asyncDispachError=Erreur lors d'un dispatch asynchrone
+asyncContextImpl.dispatchingStarted=Une opération de dispatch asynchrone a déjà été appelée, plusieurs dispatch au cours d'un même cycle asynchrone n'est pas autorisé
+asyncContextImpl.noAsyncDispatcher=Le Servlet dispatcher retourné par le ServletContext ne supporte pas de dispatch asynchrone
+asyncContextImpl.onCompleteError=L''appel à onComplete() a échoué pour l''écouteur de type [{0}]
+asyncContextImpl.onErrorError=L''appel à onError() a échoué pour l''écouteur de type [{0}]
+asyncContextImpl.onStartAsyncError=L''appel à onStartAsync() a échoué pour l''écouteur de type [{0}]
+asyncContextImpl.onTimeoutError=L''appel à onTimeout() a échoué pour l''écouteur de type [{0}]
+asyncContextImpl.request.ise=Il est illégal d'appeler getRequest() après que complete() ou une autre des méthodes dispatch() ait été appelé
+asyncContextImpl.requestEnded=La requête associée avec l'AsyncContext est déjà terminée
+asyncContextImpl.response.ise=Il est illégal d'appeler getResponse() après que complete() ou n'importe laquelle des méthodes de dispatch a été appelée
+
containerBase.alreadyStarted=Le conteneur {0} a déjà été démarré
containerBase.notConfigured=Aucune Valve basique (basic valve) n''a été configurée
containerBase.notStarted=Le conteneur {0} n''a pas été démarré
-fastEngineMapper.alreadyStarted=le "FastEngineMapper" {0} a déjà été démarré
-fastEngineMapper.notStarted=Le "FastEngineMapper" {0} n''a pas encore été démarré
-
-filterChain.filter=L''exécution du filtre (Filter) a lancé une exception
-filterChain.servlet=L''exécution de la servlet a lancé une exception
-
-httpContextMapper.container=Ce conteneur n''est pas un "StandardContext"
-
-httpEngineMapper.container=Ce conteneur n''est pas un "StandardEngine"
-
-httpHostMapper.container=Ce conteneur n''est pas un "StandardHost"
-
-interceptorValve.alreadyStarted=La valve d''interception (InterceptorValve) a déjà été démarrée
-interceptorValve.notStarted=La valve d''interception (InterceptorValve) n''a pas encore été démarrée
+filterChain.filter=L'exécution du filtre (Filter) a lancé une exception
+filterChain.servlet=L'exécution de la servlet a lancé une exception
naming.bindFailed=Echec lors du liage à l''objet: {0}
naming.invalidEnvEntryType=L''entrée environnement {0} a un type invalide
diff --git a/java/org/apache/catalina/core/LocalStrings_ja.properties b/java/org/apache/catalina/core/LocalStrings_ja.properties
index 50e4632..b454bf5 100644
--- a/java/org/apache/catalina/core/LocalStrings_ja.properties
+++ b/java/org/apache/catalina/core/LocalStrings_ja.properties
@@ -36,21 +36,9 @@ containerBase.alreadyStarted=コンテナ {0} は既に起動されています
containerBase.notConfigured=基本バルブが設定されていません
containerBase.notStarted=コンテナ {0} はまだ起動されていません
-fastEngineMapper.alreadyStarted=FastEngineMapper {0} は既に起動されています
-fastEngineMapper.notStarted=FastEngineMapper {0} はまだ起動されていません
-
filterChain.filter=フィルタの実行により例外を投げました
filterChain.servlet=サーブレットの実行により例外を投げました
-httpContextMapper.container=このコンテナはStandardContextではありません
-
-httpEngineMapper.container=このコンテナはStandardEngineではありません
-
-httpHostMapper.container=このコンテナはStandardHostではありません
-
-interceptorValve.alreadyStarted=InterceptorValveは既に起動されています
-interceptorValve.notStarted=InterceptorValveはまだ起動されていません
-
naming.bindFailed=オブジェクトのバインドに失敗しました: {0}
naming.invalidEnvEntryType=環境エントリ {0} は無効な型を持っています
naming.invalidEnvEntryValue=環境エントリ {0} は無効な値を持っています
diff --git a/java/org/apache/catalina/security/SecurityClassLoad.java b/java/org/apache/catalina/security/SecurityClassLoad.java
index ab74100..0ca8205 100644
--- a/java/org/apache/catalina/security/SecurityClassLoad.java
+++ b/java/org/apache/catalina/security/SecurityClassLoad.java
@@ -14,8 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-
package org.apache.catalina.security;
/**
@@ -24,12 +22,11 @@ package org.apache.catalina.security;
* RuntimePermission does not trigger an AccessControlException.
*
* @author Glenn L. Nielsen
- * @author Jean-Francois Arcand
*/
public final class SecurityClassLoad {
- public static void securityClassLoad(ClassLoader loader)
- throws Exception {
+ public static void securityClassLoad(ClassLoader loader) throws Exception {
+
if( System.getSecurityManager() == null ){
return;
@@ -49,16 +46,15 @@ public final class SecurityClassLoad {
}
- private static final void loadCorePackage(ClassLoader loader)
- throws Exception {
+ private static final void loadCorePackage(ClassLoader loader) throws Exception {
final String basePackage = "org.apache.catalina.core.";
loader.loadClass(basePackage + "AccessLogAdapter");
loadAnonymousInnerClasses(loader, basePackage + "ApplicationContextFacade");
loader.loadClass(basePackage + "ApplicationDispatcher$PrivilegedForward");
loader.loadClass(basePackage + "ApplicationDispatcher$PrivilegedInclude");
loader.loadClass(basePackage + "AsyncContextImpl");
+ loader.loadClass(basePackage + "AsyncContextImpl$AsyncRunnable");
loader.loadClass(basePackage + "AsyncContextImpl$DebugException");
- loadAnonymousInnerClasses(loader, basePackage + "AsyncContextImpl");
loader.loadClass(basePackage + "AsyncListenerWrapper");
loader.loadClass(basePackage + "ContainerBase$PrivilegedAddChild");
loadAnonymousInnerClasses(loader, basePackage + "DefaultInstanceManager");
@@ -68,28 +64,20 @@ public final class SecurityClassLoad {
}
- private static final void loadLoaderPackage(ClassLoader loader)
- throws Exception {
+ private static final void loadLoaderPackage(ClassLoader loader) throws Exception {
final String basePackage = "org.apache.catalina.loader.";
- loader.loadClass
- (basePackage +
- "ResourceEntry");
- loader.loadClass
- (basePackage +
- "WebappClassLoaderBase$PrivilegedFindResourceByName");
+ loader.loadClass(basePackage + "ResourceEntry");
+ loader.loadClass(basePackage + "WebappClassLoaderBase$PrivilegedFindResourceByName");
}
- private static final void loadRealmPackage(ClassLoader loader)
- throws Exception {
+ private static final void loadRealmPackage(ClassLoader loader) throws Exception {
final String basePackage = "org.apache.catalina.realm.";
- loader.loadClass
- (basePackage + "LockOutRealm$LockRecord");
+ loader.loadClass(basePackage + "LockOutRealm$LockRecord");
}
- private static final void loadServletsPackage(ClassLoader loader)
- throws Exception {
+ private static final void loadServletsPackage(ClassLoader loader) throws Exception {
final String basePackage = "org.apache.catalina.servlets.";
// Avoid a possible memory leak in the DefaultServlet when running with
// a security manager. The DefaultServlet needs to load an XML parser
@@ -100,8 +88,7 @@ public final class SecurityClassLoad {
}
- private static final void loadSessionPackage(ClassLoader loader)
- throws Exception {
+ private static final void loadSessionPackage(ClassLoader loader) throws Exception {
final String basePackage = "org.apache.catalina.session.";
loader.loadClass(basePackage + "StandardSession");
loadAnonymousInnerClasses(loader, basePackage + "StandardSession");
@@ -109,8 +96,7 @@ public final class SecurityClassLoad {
}
- private static final void loadUtilPackage(ClassLoader loader)
- throws Exception {
+ private static final void loadUtilPackage(ClassLoader loader) throws Exception {
final String basePackage = "org.apache.catalina.util.";
loader.loadClass(basePackage + "Enumerator");
loader.loadClass(basePackage + "ParameterMap");
@@ -118,15 +104,13 @@ public final class SecurityClassLoad {
}
- private static final void loadValvesPackage(ClassLoader loader)
- throws Exception {
- final String basePackage = "org.apache.catalina.valves.";
- loader.loadClass(basePackage + "AccessLogValve$3");
- }
+ private static final void loadValvesPackage(ClassLoader loader) throws Exception {
+ final String basePackage = "org.apache.catalina.valves.";
+ loader.loadClass(basePackage + "AccessLogValve$3");
+ }
- private static final void loadCoyotePackage(ClassLoader loader)
- throws Exception {
+ private static final void loadCoyotePackage(ClassLoader loader) throws Exception {
final String basePackage = "org.apache.coyote.";
// Java 6 compiler creates helper *$1 classes because we use switch with an enum
loadAnonymousInnerClasses(loader, basePackage + "http11.AbstractHttp11Processor");
@@ -137,18 +121,16 @@ public final class SecurityClassLoad {
loader.loadClass(basePackage + "http11.Constants");
// Make sure system property is read at this point
Class<?> clazz = loader.loadClass(basePackage + "Constants");
- clazz.newInstance();
+ clazz.getConstructor().newInstance();
}
- private static final void loadJavaxPackage(ClassLoader loader)
- throws Exception {
+ private static final void loadJavaxPackage(ClassLoader loader) throws Exception {
loader.loadClass("javax.servlet.http.Cookie");
}
- private static final void loadConnectorPackage(ClassLoader loader)
- throws Exception {
+ private static final void loadConnectorPackage(ClassLoader loader) throws Exception {
final String basePackage = "org.apache.catalina.connector.";
loader.loadClass(basePackage + "RequestFacade$GetAttributePrivilegedAction");
loader.loadClass(basePackage + "RequestFacade$GetParameterMapPrivilegedAction");
@@ -172,8 +154,8 @@ public final class SecurityClassLoad {
loadAnonymousInnerClasses(loader, basePackage + "Response");
}
- private static final void loadTomcatPackage(ClassLoader loader)
- throws Exception {
+
+ private static final void loadTomcatPackage(ClassLoader loader) throws Exception {
final String basePackage = "org.apache.tomcat.";
// buf
loader.loadClass(basePackage + "util.buf.B2CConverter");
@@ -217,4 +199,3 @@ public final class SecurityClassLoad {
}
}
}
-
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org