costin      01/06/08 20:20:52

  Modified:    src/share/org/apache/tomcat/core Context.java
                        ContextManager.java
  Log:
  Extra checks for errors on adding the modules.
  
  Added fields and accessors for the other 3 class loaders used in tomcat,
  to allow modules to start using it.
  
  Revision  Changes    Path
  1.142     +16 -10    jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java
  
  Index: Context.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Context.java,v
  retrieving revision 1.141
  retrieving revision 1.142
  diff -u -r1.141 -r1.142
  --- Context.java      2001/03/02 04:49:06     1.141
  +++ Context.java      2001/06/09 03:20:51     1.142
  @@ -484,17 +484,23 @@
            for( int i=0; i< cI.length; i++ ) {
                if( cI[i].getContext() != this )
                    continue; // not ours, don't have to initialize it.
  -             cI[i].addInterceptor( contextM, this , cI[i] ); 
  -             BaseInterceptor existingI[]=defaultContainer.getInterceptors();
  -             for( int j=0; j<existingI.length; j++ ) {
  -                 if( existingI[j] != cI[i] )
  -                     existingI[j].addInterceptor( contextM, this, cI[i] );
  +             try {
  +                 cI[i].addInterceptor( contextM, this , cI[i] ); 
  +                 BaseInterceptor existingI[]=defaultContainer.
  +                     getInterceptors();
  +                 for( int j=0; j<existingI.length; j++ ) {
  +                     if( existingI[j] != cI[i] )
  +                         existingI[j].addInterceptor( contextM,
  +                                                      this, cI[i] );
  +                 }
  +                 
  +                 // set all local interceptors 
  +                 cI[i].setContextManager( contextM );
  +                 cI[i].engineInit( contextM );
  +                 cI[i].addContext( contextM, this );
  +             } catch( TomcatException ex ) {
  +                 log("Error adding module " + cI[i] + " to " + this , ex);
                }
  -             
  -             // set all local interceptors 
  -             cI[i].setContextManager( contextM );
  -             cI[i].engineInit( contextM );
  -             cI[i].addContext( contextM, this );
            }
        }
        this.state=state;
  
  
  
  1.180     +39 -0     
jakarta-tomcat/src/share/org/apache/tomcat/core/ContextManager.java
  
  Index: ContextManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/ContextManager.java,v
  retrieving revision 1.179
  retrieving revision 1.180
  diff -u -r1.179 -r1.180
  --- ContextManager.java       2001/05/26 17:45:44     1.179
  +++ ContextManager.java       2001/06/09 03:20:52     1.180
  @@ -213,6 +213,15 @@
       // the embedding application loader. @see getParentLoader
       private ClassLoader parentLoader;
   
  +    // the common class loader, shared by container and apps
  +    private ClassLoader commonLoader;
  +
  +    // the container class loader, used to load all container modules
  +    private ClassLoader containerLoader;
  +
  +    // the webapp loader, with classes shared by all webapps.
  +    private ClassLoader appsLoader;
  +
       private Hashtable properties=new Hashtable();
       
       /**
  @@ -362,6 +371,30 @@
        return parentLoader;
       }
   
  +    public final void setCommonLoader( ClassLoader cl ) {
  +     commonLoader=cl;
  +    }
  +
  +    public final ClassLoader getCommonLoader() {
  +     return commonLoader;
  +    }
  +
  +    public final void setContainerLoader( ClassLoader cl ) {
  +     containerLoader=cl;
  +    }
  +
  +    public final ClassLoader getContainerLoader() {
  +     return containerLoader;
  +    }
  +
  +    public final void setAppsLoader( ClassLoader cl ) {
  +     appsLoader=cl;
  +    }
  +
  +    public final ClassLoader getAppsLoader() {
  +     return appsLoader;
  +    }
  +
       /** Default container. The interceptors for this container will
        be called for all requests, and it will be associated with
        invalid requests ( where context can't be found ).
  @@ -518,6 +551,12 @@
                for( int i=0; i<existingI.length; i++ ) {
                    existingI[i].addContext( this, ctx );
                }
  +         } catch( TomcatException ex ) {
  +             log( "Error adding context " + ctx , ex );
  +             continue; 
  +         }
  +         try {
  +             // set state may throw exception
                ctx.setState( Context.STATE_ADDED );
                log("Adding  " +  ctx.toString());
            } catch( TomcatException ex ) {
  
  
  

Reply via email to