From 1c711e1b3c7129cec4cf4aeeee4c72b817f851e1 Mon Sep 17 00:00:00 2001 From: markt Date: Thu, 22 Jul 2010 21:36:11 +0000 Subject: [PATCH] Fix regression in previous fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=49555 Use TCCL to load webapp classes git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@966863 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/jasper/compiler/ELFunctionMapper.java | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/java/org/apache/jasper/compiler/ELFunctionMapper.java b/java/org/apache/jasper/compiler/ELFunctionMapper.java index 235b402de..ce758cd2f 100644 --- a/java/org/apache/jasper/compiler/ELFunctionMapper.java +++ b/java/org/apache/jasper/compiler/ELFunctionMapper.java @@ -17,8 +17,12 @@ package org.apache.jasper.compiler; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.*; import javax.servlet.jsp.tagext.FunctionInfo; + +import org.apache.jasper.Constants; import org.apache.jasper.JasperException; /** @@ -296,13 +300,30 @@ public class ELFunctionMapper { */ private String getCanonicalName(String className) throws JasperException { Class clazz; + + ClassLoader tccl; + if (Constants.IS_SECURITY_ENABLED) { + PrivilegedAction pa = new PrivilegedGetTccl(); + tccl = AccessController.doPrivileged(pa); + } else { + tccl = Thread.currentThread().getContextClassLoader(); + } + try { - clazz = Class.forName(className); + clazz = Class.forName(className, true, tccl); } catch (ClassNotFoundException e) { throw new JasperException(e); } return clazz.getCanonicalName(); } } + + private static class PrivilegedGetTccl + implements PrivilegedAction { + + public ClassLoader run() { + return Thread.currentThread().getContextClassLoader(); + } + } } -- 2.11.0