yoavs 2004/11/22 06:54:57
Modified: webapps/docs Tag: TOMCAT_5_0 changelog.xml
jasper2/src/share/org/apache/jasper Tag: TOMCAT_5_0
JspC.java
Log:
Bugzilla 32330: JspC changes context classloader
Revision Changes Path
No revision
No revision
1.70.2.80 +3 -0 jakarta-tomcat-catalina/webapps/docs/changelog.xml
Index: changelog.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/changelog.xml,v
retrieving revision 1.70.2.79
retrieving revision 1.70.2.80
diff -u -r1.70.2.79 -r1.70.2.80
--- changelog.xml 19 Nov 2004 15:17:40 -0000 1.70.2.79
+++ changelog.xml 22 Nov 2004 14:54:56 -0000 1.70.2.80
@@ -98,6 +98,9 @@
<fix>
<bug>29866</bug>: JspReader#skipUntil may try to read beyond the end
of the file. (yoavs)
</fix>
+ <fix>
+ <bug>32330</bug>: JspC changes context classloader. (yoavs)
+ </fix>
</changelog>
</subsection>
No revision
No revision
1.80.2.6 +22 -3
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspC.java
Index: JspC.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/JspC.java,v
retrieving revision 1.80.2.5
retrieving revision 1.80.2.6
diff -u -r1.80.2.5 -r1.80.2.6
--- JspC.java 19 Nov 2004 14:37:47 -0000 1.80.2.5
+++ JspC.java 22 Nov 2004 14:54:56 -0000 1.80.2.6
@@ -813,6 +813,8 @@
private void processFile(String file)
throws JasperException
{
+ ClassLoader originalClassLoader = null;
+
try {
// set up a scratch/output dir if none is provided
if (scratchDir == null) {
@@ -836,8 +838,9 @@
clctxt.setServletPackageName(targetPackage);
}
- if( loader==null )
- initClassLoader( clctxt );
+ if( loader==null ) {
+ originalClassLoader = initClassLoader( clctxt );
+ }
clctxt.setClassLoader(loader);
clctxt.setClassPath(classPath);
@@ -877,6 +880,10 @@
e.getMessage()));
}
throw new JasperException(e);
+ } finally {
+ if(originalClassLoader != null) {
+
Thread.currentThread().setContextClassLoader(originalClassLoader);
+ }
}
}
@@ -1082,7 +1089,15 @@
tagPluginManager = new TagPluginManager(context);
}
- private void initClassLoader(JspCompilationContext clctxt)
+ /**
+ * Initializes the classloader for the given compilation
+ * context.
+ *
+ * @param clctxt The compilation context
+ * @return The original classloader before modifying
+ * @throws IOException If an error occurs
+ */
+ private ClassLoader initClassLoader(JspCompilationContext clctxt)
throws IOException {
classPath = getClassPath();
@@ -1159,7 +1174,11 @@
URL urlsA[]=new URL[urls.size()];
urls.toArray(urlsA);
loader = new URLClassLoader(urlsA, this.getClass().getClassLoader());
+
+ ClassLoader originalClassLoader =
Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(loader);
+
+ return originalClassLoader;
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]