remm 00/11/12 22:19:02
Modified: catalina/src/share/org/apache/catalina/startup
Bootstrap.java
Log:
- Adds a new "system" class loader on top of the catalina and shared
classloaders, to avoid any possible problems when Catalina is put on top of
a management system like Avalon.
Revision Changes Path
1.6 +54 -10
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Bootstrap.java
Index: Bootstrap.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Bootstrap.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Bootstrap.java 2000/09/30 19:15:47 1.5
+++ Bootstrap.java 2000/11/13 06:19:01 1.6
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Bootstrap.java,v
1.5 2000/09/30 19:15:47 craigmcc Exp $
- * $Revision: 1.5 $
- * $Date: 2000/09/30 19:15:47 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/Bootstrap.java,v
1.6 2000/11/13 06:19:01 remm Exp $
+ * $Revision: 1.6 $
+ * $Date: 2000/11/13 06:19:01 $
*
* ====================================================================
*
@@ -84,7 +84,7 @@
* class path and therefore not visible to application level classes.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.5 $ $Date: 2000/09/30 19:15:47 $
+ * @version $Revision: 1.6 $ $Date: 2000/11/13 06:19:01 $
*/
public final class Bootstrap {
@@ -101,8 +101,9 @@
public static void main(String args[]) {
// Construct the class loaders we will need
- ClassLoader catalinaLoader = createCatalinaLoader();
- ClassLoader sharedLoader = createSharedLoader();
+ ClassLoader systemLoader = createSystemLoader();
+ ClassLoader catalinaLoader = createCatalinaLoader(systemLoader);
+ ClassLoader sharedLoader = createSharedLoader(systemLoader);
// Load our startup class and call its process() method
try {
@@ -145,9 +146,52 @@
/**
* Construct and return the class loader to be used for loading
+ * of the shared system classes.
+ */
+ private static ClassLoader createSystemLoader() {
+
+ // Construct the "class path" for this class loader
+ ArrayList list = new ArrayList();
+
+ File directory = new File(System.getProperty("catalina.home"),
+ "bin");
+ if (!directory.exists() || !directory.canRead() ||
+ !directory.isDirectory()) {
+ System.out.println("Directory " + directory.getAbsolutePath()
+ + " does not exist");
+ System.exit(1);
+ }
+ String filenames[] = directory.list();
+ for (int i = 0; i < filenames.length; i++) {
+ String filename = filenames[i].toLowerCase();
+ if ((!filename.endsWith(".jar")) ||
+ (filename.indexOf("bootstrap.jar") != -1))
+ continue;
+ File file = new File(directory, filenames[i]);
+ try {
+ URL url = new URL("file", null, file.getAbsolutePath());
+ list.add(url.toString());
+ } catch (MalformedURLException e) {
+ System.out.println("Cannot create URL for " +
+ filenames[i]);
+ System.exit(1);
+ }
+ }
+
+ // Construct the class loader itself
+ String array[] = (String[]) list.toArray(new String[list.size()]);
+ StandardClassLoader loader = new StandardClassLoader(array);
+
+ return (loader);
+
+ }
+
+
+ /**
+ * Construct and return the class loader to be used for loading
* Catalina internal classes.
*/
- private static ClassLoader createCatalinaLoader() {
+ private static ClassLoader createCatalinaLoader(ClassLoader parent) {
// Construct the "class path" for this class loader
ArrayList list = new ArrayList();
@@ -192,7 +236,7 @@
// Construct the class loader itself
String array[] = (String[]) list.toArray(new String[list.size()]);
- StandardClassLoader loader = new StandardClassLoader(array);
+ StandardClassLoader loader = new StandardClassLoader(array, parent);
return (loader);
@@ -203,7 +247,7 @@
* Construct and return the class loader to be used for shared
* extensions by web applications loaded with Catalina.
*/
- private static ClassLoader createSharedLoader() {
+ private static ClassLoader createSharedLoader(ClassLoader parent) {
// Construct the "class path" for this class loader
ArrayList list = new ArrayList();
@@ -233,7 +277,7 @@
// Construct the class loader itself
String array[] = (String[]) list.toArray(new String[list.size()]);
- StandardClassLoader loader = new StandardClassLoader(array);
+ StandardClassLoader loader = new StandardClassLoader(array, parent);
/*
System.out.println("AVAILABLE OPTIONAL PACKAGES:");
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]