jfarcand 2003/03/14 14:07:33
Modified: catalina/src/share/org/apache/catalina/core
StandardWrapper.java
Log:
Add a do privileged block used when jsps are precompiled.
Revision Changes Path
1.17 +39 -8
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapper.java
Index: StandardWrapper.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardWrapper.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- StandardWrapper.java 8 Mar 2003 06:58:11 -0000 1.16
+++ StandardWrapper.java 14 Mar 2003 22:07:33 -0000 1.17
@@ -70,6 +70,9 @@
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Stack;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
@@ -926,18 +929,46 @@
// Load the specified servlet class from the appropriate class loader
Class classClass = null;
try {
- if (classLoader != null) {
- classClass = classLoader.loadClass(actualClass);
- } else {
- classClass = Class.forName(actualClass);
+ if (System.getSecurityManager() != null){
+ final ClassLoader fclassLoader = classLoader;
+ final String factualClass = actualClass;
+ try{
+ classClass = (Class)AccessController.doPrivileged(
+ new PrivilegedExceptionAction(){
+ public Object run() throws Exception{
+ if (fclassLoader != null) {
+ return
fclassLoader.loadClass(factualClass);
+ } else {
+ return Class.forName(factualClass);
+ }
+ }
+ });
+ } catch(PrivilegedActionException pax){
+ Exception ex = pax.getException();
+ if (ex instanceof ClassNotFoundException){
+ throw (ClassNotFoundException)ex;
+ } else {
+ log.error( "Error loading "
+ + fclassLoader + " " + factualClass, ex );
+ }
+ }
+ } else {
+ if (classLoader != null) {
+ classClass = classLoader.loadClass(actualClass);
+ } else {
+ classClass = Class.forName(actualClass);
+ }
}
} catch (ClassNotFoundException e) {
unavailable(null);
+
+
log.error( "Error loading " + classLoader + " " + actualClass, e );
throw new ServletException
(sm.getString("standardWrapper.missingClass", actualClass),
e);
}
+
if (classClass == null) {
unavailable(null);
throw new ServletException
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]