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]

Reply via email to