tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cos...@apache.org
Subject cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/startup Main.java
Date Sat, 09 Jun 2001 03:35:07 GMT
costin      01/06/08 20:35:07

  Modified:    src/share/org/apache/tomcat/startup Main.java
  Log:
  The cleanup of Main - the duplicated methods are moved in util, unused
  code removed, the other class loaders are saved ( instead of just abandoning
  them and using getClassLoader later )
  
  Revision  Changes    Path
  1.33      +69 -205   jakarta-tomcat/src/share/org/apache/tomcat/startup/Main.java
  
  Index: Main.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/startup/Main.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- Main.java	2001/05/21 04:44:24	1.32
  +++ Main.java	2001/06/09 03:35:06	1.33
  @@ -1,4 +1,4 @@
  -/* $Id: Main.java,v 1.32 2001/05/21 04:44:24 costin Exp $
  +/* $Id: Main.java,v 1.33 2001/06/09 03:35:06 costin Exp $
    * ====================================================================
    *
    * The Apache Software License, Version 1.1
  @@ -69,6 +69,8 @@
   import org.apache.tomcat.util.IntrospectionUtils;
   import org.apache.tomcat.util.compat.Jdk11Compat;
   
  +// The main idea is to have a starter with minimal class loader deps,
  +// and use it to create the initial environment
   
   /**
   	Starter class for Tomcat.
  @@ -107,7 +109,7 @@
   	@author Costin Manolache
   	@author Ignacio J. Ortega
   	@author Mel Martinez mmartinez@g1440.com
  -	@version $Revision: 1.32 $ $Date: 2001/05/21 04:44:24 $
  +	@version $Revision: 1.33 $ $Date: 2001/06/09 03:35:06 $
    */
   public class Main{
   
  @@ -199,74 +201,35 @@
   
       // -------------------- Utils --------------------
   
  -    public static String checkDir( String base ) {
  -        String r=null;
  -        try {
  -            File f = new File(base);
  -            r = f.getCanonicalPath();
  -            if( ! r.endsWith("/") && ! r.endsWith(File.separator) ) r+=File.separator;
  -        } catch (IOException ioe) {
  -            ioe.printStackTrace();
  -            r=base;
  -        }
  -        return r;
  +    public String getInstallDir() {
  +	if( installDir==null )
  +	    installDir=".";
  +	return installDir;
       }
   
  -    public static URL getURL( String base, String file ) {
  -        try {
  -            File baseF = new File(base);
  -            File f = new File(baseF,file);
  -            String path = f.getCanonicalPath();
  -            if( f.isDirectory() ){
  -                    path +="/";
  -            }
  -            return new URL( "file", "", path );
  -        } catch (Exception ex) {
  -            ex.printStackTrace();
  -            return null;
  -        }
  -    }
  -
       public String getServerDir() {
  -        if( libBase!=null ){
  -            return libBase;
  +        if( libBase==null ){
  +	    libBase=getInstallDir() + File.separator + "lib" +
  +		File.separator + "container" + File.separator;
           }
  -        if( installDir!=null ){
  -            libBase=checkDir( installDir + File.separator + "lib" +
  -			      File.separator + "container");
  -        }else{
  -            libBase=checkDir("." + File.separator + "lib" +
  -			     File.separator + "container");
  -        }
  -        return libBase;
  +	return libBase;
       }
   
       public String getAppsDir() {
  -        if( serverBase!=null ){
  -            return serverBase;
  -        }
  -        if( installDir!=null ){
  -            serverBase=checkDir( installDir + File.separator + "lib" +
  -				 File.separator + "apps");
  -        }else{
  -            serverBase=checkDir("." + File.separator + "lib" +
  -				File.separator + "apps");
  +        if( serverBase==null ){
  +	    serverBase=getInstallDir() + File.separator + "lib" +
  +		File.separator + "apps" + File.separator;
           }
  -        return serverBase;
  +	return serverBase;
       }
   
       public String getCommonDir() {
  -        if( commonBase!=null ){
  -            return commonBase;
  +        if( commonBase==null ){
  +	    commonBase=getInstallDir() + File.separator + "lib" +
  +		File.separator+ "common" + File.separator;
  +			
           }
  -        if( installDir!=null ){
  -            commonBase=checkDir( installDir + File.separator + "lib" +
  -				 File.separator+ "common");
  -        }else{
  -            commonBase=checkDir("." +File.separator + "lib" +
  -				File.separator + "common");
  -        }
  -        return commonBase;
  +	return commonBase;
       }
   
   
  @@ -281,47 +244,49 @@
               homeDir = System.getProperty("tomcat.home");
   
               ClassLoader parentL=this.getClass().getClassLoader();
  +
  +            // the server classloader loads from classes dir too and
  +	    // from tools.jar
   
  -            // the server classloader loads from classes dir too and from tools.jar
  +	    // Create the common class loader --------------------
  +	    Vector commonJars = new Vector();
  +	    IntrospectionUtils.addToClassPath( commonJars,
  +					       getCommonDir());
  +	    IntrospectionUtils.addJarsFromClassPath(commonJars,
  +						    TOMCAT_COMMON_CLASSPATH);
  +
  +            URL[] commonClassPath=IntrospectionUtils.getClassPath(commonJars);
  +	    //            displayClassPath( "common ", commonClassPath );
  +	    ClassLoader commonCl=
  +                    jdk11Compat.newClassLoaderInstance(commonClassPath ,
  +						       parentL);
   
  +
  +	    // Create the container class loader --------------------
               Vector serverJars=new Vector();
  -            //serverJars.addElement( getURL(  getServerDir() ,"../classes/" ));
  -            Vector serverUrlV =getClassPathV(getServerDir());
  -            for(int i=0; i < serverUrlV.size();i++){
  -                serverJars.addElement(serverUrlV.elementAt(i));
  -            }
  -            serverJars.addElement( new URL( "file", "" ,
  -                System.getProperty( "java.home" ) + "/../lib/tools.jar"));
  -
  -            Vector commonDirJars = getClassPathV(getCommonDir());
  -            Vector commonJars = getJarsFromClassPath(TOMCAT_COMMON_CLASSPATH);
  -            Enumeration jars = commonDirJars.elements();
  -            while(jars.hasMoreElements()){
  -                URL url = (URL)jars.nextElement();
  -                if(!commonJars.contains(url)){
  -                    commonJars.addElement(url);
  -                }
  -            }
  -            Vector appsDirJars = getClassPathV(getAppsDir());
  -            Vector appsJars = getJarsFromClassPath(TOMCAT_APPS_CLASSPATH);
  -            jars = appsDirJars.elements();
  -            while(jars.hasMoreElements()){
  -                URL url = (URL)jars.nextElement();
  -                if(!appsJars.contains(url)){
  -                    appsJars.addElement(url);
  -                }
  -            }
  -            URL[] commonClassPath=getURLs(commonJars);
  -            ClassLoader commonCl=
  -                    jdk11Compat.newClassLoaderInstance(commonClassPath ,parentL);
  -            URL[] appsClassPath=getURLs(appsJars);
  -            ClassLoader appsCl=
  -                    jdk11Compat.newClassLoaderInstance(appsClassPath ,commonCl);
  -            URL[] serverClassPath=getURLs(serverJars);
  +	    IntrospectionUtils.addToClassPath( serverJars, getServerDir());
  +	    IntrospectionUtils.addToolsJar( serverJars );
  +
  +
  +	    URL[] serverClassPath=IntrospectionUtils.getClassPath(serverJars);
  +	    //displayClassPath( "server ", serverClassPath );
               ClassLoader serverCl=
  -                    jdk11Compat.newClassLoaderInstance(serverClassPath ,commonCl);
  +                    jdk11Compat.newClassLoaderInstance(serverClassPath ,
  +						       commonCl);
   
  +	    // Create the webapps class loader --------------------
  +            Vector appsJars = new Vector();
  +	    IntrospectionUtils.addToClassPath(appsJars, getAppsDir());
  +	    IntrospectionUtils.addJarsFromClassPath( appsJars, 
  +						     TOMCAT_APPS_CLASSPATH);
  +
  +	    
  +            URL[] appsClassPath=IntrospectionUtils.getClassPath(appsJars);
  +            ClassLoader appsCl=
  +		jdk11Compat.newClassLoaderInstance(appsClassPath ,
  +						       commonCl);
   
  +	    // Instantiate tomcat ( using container class loader )
               Class cls=serverCl.loadClass("org.apache.tomcat.startup.Tomcat");
               Object proxy=cls.newInstance();
   
  @@ -329,6 +294,12 @@
               IntrospectionUtils.setAttribute(proxy,"home", homeDir );
               IntrospectionUtils.setAttribute(proxy,"install", installDir );
               IntrospectionUtils.setAttribute(proxy,"parentClassLoader",appsCl);
  +	    IntrospectionUtils.setAttribute(proxy,"commonClassLoader",
  +					    commonCl);
  +	    IntrospectionUtils.setAttribute(proxy,"containerClassLoader",
  +					    serverCl);
  +	    IntrospectionUtils.setAttribute(proxy,"appsClassLoader",
  +					    appsCl);
               IntrospectionUtils.execute(  proxy, "execute" );
               return;
           } catch( Exception ex ) {
  @@ -337,120 +308,13 @@
           }
       }
   
  -    // -------------------- Command-line args processing --------------------
  -    /* Later
  -       static class Arg {
  -       String name;
  -       String aliases[];
  -       int args;
  -
  -       boolean task;
  -       }
  -    */
  -/*
  -    String args0[]= { "help", "stop", "g", "generateConfigs" };
  -    String args1[]= { "f", "config", "h", "home" };
  -
  -     Read command line arguments and set properties in proxy,
  -	using ant-like patterns
  -    void processArgs(Object proxy, String args[] )
  -	throws Exception
  -    {
  -
  -	for( int i=0; i< args.length; i++ ) {
  -	    String arg=args[i];
  -	    if( arg.startsWith("-"))
  -		arg=arg.substring(1);
  -
  -	    for( int j=0; j< args0.length ; j++ ) {
  -		if( args0[j].equalsIgnoreCase( arg )) {
  -		    IntrospectionUtils.setAttribute( proxy, args0[j], "true");
  -		    break;
  -		}
  -	    }
  -	    for( int j=0; j< args1.length ; j++ ) {
  -		if( args1[j].equalsIgnoreCase( arg )) {
  -		    i++;
  -		    if( i < args.length )
  -			IntrospectionUtils.setAttribute( proxy,
  -							 args1[j], args[i]);
  -		    break;
  -		}
  -	    }
  +    public void displayClassPath( String msg, URL[] cp ) {
  +	System.out.println(msg);
  +	for( int i=0; i<cp.length; i++ ) {
  +	    System.out.println( cp[i].getFile() );
   	}
  -    }
  -*/
  -    /**
  -            add elements from the classpath <i>cp</i> to a Vector
  -            <i>jars</i> as file URLs (We use Vector for JDK 1.1 compat).
  -            <p>
  -            @param <b>cp</b> a String classpath of directory or jar file
  -                            elements separated by path.separator delimiters.
  -            @return a Vector of URLs.
  -    */
  -    public static Vector getJarsFromClassPath(String cp)
  -            throws IOException,MalformedURLException{
  -        Vector jars = new Vector();
  -        String sep = System.getProperty("path.separator");
  -        String token;
  -        StringTokenizer st;
  -        if(cp!=null){
  -            st = new StringTokenizer(cp,sep);
  -            while(st.hasMoreTokens()){
  -                File f = new File(st.nextToken());
  -                String path = f.getCanonicalPath();
  -                if(f.isDirectory()){
  -                        path += "/";
  -                }
  -                URL url = new URL("file","",path);
  -                if(!jars.contains(url)){
  -                        jars.addElement(url);
  -                }
  -            }
  -        }
  -        return jars;
  -    }
  -
  -    public String[] getJarFiles(String ld) {
  -	File dir = new File(ld);
  -        String[] names=null;
  -        if (dir.isDirectory()){
  -            names = dir.list( new FilenameFilter(){
  -            public boolean accept(File d, String name) {
  -                if (name.endsWith(".jar")){
  -                    return true;
  -                }
  -                return false;
  -            }
  -            });
  -        }
  -
  -	return names;
  -    }
  -
  -    Vector getClassPathV(String p0) throws Exception {
  -        Vector urlV=new Vector();
  -        try{
  -            String cpComp[]=getJarFiles(p0);
  -            if (cpComp != null){
  -                int jarCount=cpComp.length;
  -                for( int i=0; i< jarCount ; i++ ) {
  -                    urlV.addElement( getURL(  p0 , cpComp[i] ));
  -                }
  -            }
  -        }catch(Exception ex){
  -            ex.printStackTrace();
  -        }
  -        return urlV;
  -    }
  -
  -    private URL[] getURLs(Vector v){
  -        URL[] urls=new URL[ v.size() ];
  -        for( int i=0; i<v.size(); i++ ) {
  -            urls[i]=(URL)v.elementAt( i );
  -        }
  -        return urls;
       }
  +    
   
   }
   
  
  
  

Mime
View raw message