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]