yoavs 2004/11/22 06:44:55 Modified: webapps/docs changelog.xml jasper2/src/share/org/apache/jasper JspC.java Log: Bugzilla 32330: JspC changes context classloader Revision Changes Path 1.177 +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.176 retrieving revision 1.177 diff -u -r1.176 -r1.177 --- changelog.xml 19 Nov 2004 16:58:11 -0000 1.176 +++ changelog.xml 22 Nov 2004 14:44:55 -0000 1.177 @@ -72,6 +72,9 @@ <update> Updated JspC usage messages to include recently added configurable parameters. (yoavs) </update> + <fix> + <bug>32330</bug>: JspC changes context classloader. (yoavs) + </fix> </changelog> </subsection> 1.90 +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.89 retrieving revision 1.90 diff -u -r1.89 -r1.90 --- JspC.java 19 Nov 2004 14:30:22 -0000 1.89 +++ JspC.java 22 Nov 2004 14:44:55 -0000 1.90 @@ -812,6 +812,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) { @@ -835,8 +837,9 @@ clctxt.setServletPackageName(targetPackage); } - if( loader==null ) - initClassLoader( clctxt ); + if( loader==null ) { + originalClassLoader = initClassLoader( clctxt ); + } clctxt.setClassLoader(loader); clctxt.setClassPath(classPath); @@ -876,6 +879,10 @@ e.getMessage())); } throw new JasperException(e); + } finally { + if(originalClassLoader != null) { + Thread.currentThread().setContextClassLoader(originalClassLoader); + } } } @@ -1081,7 +1088,15 @@ tagPluginManager = new TagPluginManager(context); } - private void initClassLoader(JspCompilationContext clctxt) + /** + * Initializes the classloader as/if needed 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(); @@ -1158,7 +1173,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]