You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2002/02/11 23:24:28 UTC
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources DirContextURLStreamHandler.java
remm 02/02/11 14:24:28
Modified: catalina/src/share/org/apache/naming/resources
DirContextURLStreamHandler.java
Log:
- Update the algortithm, weighting it towards trying the context CL association
first (since that's what is used now in Catalina). In some very special cases,
the thread binding will be checked, as well as the parent classloader.
Revision Changes Path
1.6 +24 -8 jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLStreamHandler.java
Index: DirContextURLStreamHandler.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLStreamHandler.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DirContextURLStreamHandler.java 2 Jun 2001 20:24:27 -0000 1.5
+++ DirContextURLStreamHandler.java 11 Feb 2002 22:24:28 -0000 1.6
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLStreamHandler.java,v 1.5 2001/06/02 20:24:27 remm Exp $
- * $Revision: 1.5 $
- * $Date: 2001/06/02 20:24:27 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/naming/resources/DirContextURLStreamHandler.java,v 1.6 2002/02/11 22:24:28 remm Exp $
+ * $Revision: 1.6 $
+ * $Date: 2002/02/11 22:24:28 $
*
* ====================================================================
*
@@ -75,7 +75,7 @@
* Stream handler to a JNDI directory context.
*
* @author <a href="mailto:remm@apache.org">Remy Maucherat</a>
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
public class DirContextURLStreamHandler
extends URLStreamHandler {
@@ -207,18 +207,34 @@
* Get the bound context.
*/
public static DirContext get() {
+
DirContext result = null;
+
Thread currentThread = Thread.currentThread();
- result = (DirContext) threadBindings.get(currentThread);
ClassLoader currentCL = currentThread.getContextClassLoader();
- while ((result == null) && (currentCL != null)) {
+
+ // Checking CL binding
+ result = (DirContext) clBindings.get(currentCL);
+ if (result != null)
+ return result;
+
+ // Checking thread biding
+ result = (DirContext) threadBindings.get(currentThread);
+
+ // Checking parent CL binding
+ currentCL = currentCL.getParent();
+ while (currentCL != null) {
result = (DirContext) clBindings.get(currentCL);
- if (result == null)
- currentCL = currentCL.getParent();
+ if (result != null)
+ return result;
+ currentCL = currentCL.getParent();
}
+
if (result == null)
throw new IllegalStateException("Illegal class loader binding");
+
return result;
+
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>