[kaffe] CVS kaffe (dalibor): Fixes to get Tomcat 4.1.27 to load

Kaffe CVS cvs-commits at kaffe.org
Sat Sep 13 14:32:02 PDT 2003


PatchSet 4031 
Date: 2003/09/13 21:30:13
Author: dalibor
Branch: HEAD
Tag: (none) 
Log:
Fixes to get Tomcat 4.1.27 to load

It doesn't load completely: it gets a NullPointerException trying
to parse the definition file for the examples. Running it under
gdb with VM debugging enabled crashes at interesting execution
points. But at least the web server seems to work well enough

Members: 
	ChangeLog:1.1627->1.1628 
	libraries/javalib/java/net/URLClassLoader.java:1.11->1.12 
	libraries/javalib/javax/naming/spi/NamingManager.java:1.2->1.3 
	libraries/javalib/kaffe/net/www/protocol/jar/JarURLConnection.java:1.5->1.6 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.1627 kaffe/ChangeLog:1.1628
--- kaffe/ChangeLog:1.1627	Sat Sep 13 12:30:46 2003
+++ kaffe/ChangeLog	Sat Sep 13 21:30:13 2003
@@ -1,3 +1,20 @@
+2003-09-13  Dalibor Topic <robilad at kaffe.org>,
+            Helmer Kraemer  <hkraemer at freenet.de>
+
+	* libraries/javalib/javax/naming/spi/NamingManager.java:
+	(getURLContext, getObjectInstance, getStateToBind) Always use
+	current thread's context class loader when calling Class.forName.
+
+2003-09-13  Dalibor Topic <robilad at kaffe.org>
+	
+	* libraries/javalib/java/net/URLClassLoader.java
+	(findResourceInternal) Only attempt to call diconnect if
+	URLConnection u is a HttpURLConnection to avoid creating
+	unnecessary exceptions.
+
+	* libraries/javalib/kaffe/net/www/protocol/jar/JarURLConnection.java:
+	(connect) Improved exception message.
+	
 2003-09-13  Dalibor Topic <robilad at kaffe.org>
 
 	* libraries/clib/native/Runtime.c:
Index: kaffe/libraries/javalib/java/net/URLClassLoader.java
diff -u kaffe/libraries/javalib/java/net/URLClassLoader.java:1.11 kaffe/libraries/javalib/java/net/URLClassLoader.java:1.12
--- kaffe/libraries/javalib/java/net/URLClassLoader.java:1.11	Mon Jul  7 13:46:35 2003
+++ kaffe/libraries/javalib/java/net/URLClassLoader.java	Sat Sep 13 21:30:14 2003
@@ -185,12 +185,10 @@
 
 				// Try to get it, to see if it's really there
 				URLConnection u = url.openConnection();
-
-				// Try not to leave a lingering connection
-				try {
-					u.getClass().getMethod("disconnect",
-					    null).invoke(u, new Object[0]);
-				} catch (Exception e) {
+			      
+				// Try not to leave a lingering HTTP connection
+				if (u instanceof HttpURLConnection) {
+				  ((HttpURLConnection) u).disconnect();
 				}
 			
 				if (v != null) {
@@ -199,8 +197,10 @@
 					return url;
 				}
 			} catch (IOException e) {	// resource not found
+				// e.printStackTrace();
 			}
 		}
+
 		return null; 
 	}
 
Index: kaffe/libraries/javalib/javax/naming/spi/NamingManager.java
diff -u kaffe/libraries/javalib/javax/naming/spi/NamingManager.java:1.2 kaffe/libraries/javalib/javax/naming/spi/NamingManager.java:1.3
--- kaffe/libraries/javalib/javax/naming/spi/NamingManager.java:1.2	Sun Aug 10 18:47:57 2003
+++ kaffe/libraries/javalib/javax/naming/spi/NamingManager.java	Sat Sep 13 21:30:14 2003
@@ -129,7 +129,9 @@
 	String aTry = tokens.nextToken ();
 	try
 	  {
-	    Class factoryClass = Class.forName (aTry + "." + scheme);
+	    Class factoryClass = Class.forName (aTry + "." + scheme,
+						true,
+						Thread.currentThread().getContextClassLoader());
 	    ObjectFactory factory =
 	      (ObjectFactory) factoryClass.newInstance ();
 	    Object obj = factory.getObjectInstance (refInfo, name,
@@ -231,7 +233,9 @@
 	    if (fClass != null)
 	      {
 		// Exceptions here are passed to the caller.
-		Class k = Class.forName (fClass);
+		Class k = Class.forName (fClass,
+					 true,
+					 Thread.currentThread().getContextClassLoader());
 		factory = (ObjectFactory) k.newInstance ();
 	      }
 	    else
@@ -275,7 +279,9 @@
 	    while (tokens.hasMoreTokens ())
 	      {
 		String klassName = tokens.nextToken ();
-		Class k = Class.forName (klassName);
+		Class k = Class.forName (klassName,
+					 true,
+					 Thread.currentThread().getContextClassLoader());
 		factory = (ObjectFactory) k.newInstance ();
 		Object obj = factory.getObjectInstance (refInfo, name,
 							nameCtx, environment);
@@ -341,7 +347,9 @@
 	String klassName = tokens.nextToken ();
 	try
 	  {
-	    Class k = Class.forName (klassName);
+	    Class k = Class.forName (klassName,
+				     true,
+				     Thread.currentThread().getContextClassLoader());
 	    StateFactory factory = (StateFactory) k.newInstance ();
 	    Object o = factory.getStateToBind (obj, name, nameCtx,
 					       environment);
Index: kaffe/libraries/javalib/kaffe/net/www/protocol/jar/JarURLConnection.java
diff -u kaffe/libraries/javalib/kaffe/net/www/protocol/jar/JarURLConnection.java:1.5 kaffe/libraries/javalib/kaffe/net/www/protocol/jar/JarURLConnection.java:1.6
--- kaffe/libraries/javalib/kaffe/net/www/protocol/jar/JarURLConnection.java:1.5	Thu Nov 22 06:21:25 2001
+++ kaffe/libraries/javalib/kaffe/net/www/protocol/jar/JarURLConnection.java	Sat Sep 13 21:30:15 2003
@@ -87,7 +87,9 @@
 			jarEntry = jarFile.getEntry(jarEntryName);
 			if (jarEntry == null) {
 				throw new IOException("JAR entry \""
-				    + jarEntryName + "\" not found");
+						      + jarEntryName
+						      + "\" not found in JAR file "
+						      + jarFile.getName());
 			}
 		}
 		connected = true;




More information about the kaffe mailing list