amyroh      02/01/25 16:27:32

  Modified:    catalina/src/share/org/apache/catalina/mbeans
                        ServerLifecycleListener.java
  Log:
  Remove child components MBeans as container components are removed.
  
  Revision  Changes    Path
  1.15      +116 -8    
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/ServerLifecycleListener.java
  
  Index: ServerLifecycleListener.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/ServerLifecycleListener.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- ServerLifecycleListener.java      26 Jan 2002 00:02:16 -0000      1.14
  +++ ServerLifecycleListener.java      26 Jan 2002 00:27:31 -0000      1.15
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/ServerLifecycleListener.java,v
 1.14 2002/01/26 00:02:16 amyroh Exp $
  - * $Revision: 1.14 $
  - * $Date: 2002/01/26 00:02:16 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/mbeans/ServerLifecycleListener.java,v
 1.15 2002/01/26 00:27:31 amyroh Exp $
  + * $Revision: 1.15 $
  + * $Date: 2002/01/26 00:27:31 $
    *
    * ====================================================================
    *
  @@ -104,7 +104,7 @@
    *
    * @author Craig R. McClanahan
    * @author Amy Roh
  - * @version $Revision: 1.14 $ $Date: 2002/01/26 00:02:16 $
  + * @version $Revision: 1.15 $ $Date: 2002/01/26 00:27:31 $
    */
   
   public class ServerLifecycleListener
  @@ -483,6 +483,116 @@
   
   
       /**
  +     * Deregister the MBeans for the specified Context and its nested components.
  +     *
  +     * @param context Context for which to deregister MBeans
  +     *
  +     * @exception Exception if an exception is thrown during MBean creation
  +     */
  +    protected void destroyMBeans(Context context) throws Exception {
  +
  +        // deregister the MBean for the Context itself
  +        if (debug >= 4)
  +            log("Destroying MBean for Context " + context);
  +        MBeanUtils.destroyMBean(context);
  +        if (context instanceof StandardContext) {
  +            ((StandardContext) context).
  +                removePropertyChangeListener(this);
  +        }
  +
  +        // Destroy the MBeans for the associated nested components
  +        Loader cLoader = context.getLoader();
  +        if (cLoader != null) {
  +            if (debug >= 4)
  +                log("Destroying MBean for Loader " + cLoader);
  +            MBeanUtils.destroyMBean(cLoader);
  +        }
  +        Logger hLogger = context.getParent().getLogger();
  +        Logger cLogger = context.getLogger();
  +        if ((cLogger != null) && (cLogger != hLogger)) {
  +            if (debug >= 4)
  +                log("Destroying MBean for Logger " + cLogger);
  +            MBeanUtils.destroyMBean(cLogger);
  +        }
  +        Manager cManager = context.getManager();
  +        if (cManager != null) {
  +            if (debug >= 4)
  +                log("Destroying MBean for Manager " + cManager);
  +            MBeanUtils.destroyMBean(cManager);
  +        }
  +        Realm hRealm = context.getParent().getRealm();
  +        Realm cRealm = context.getRealm();
  +        if ((cRealm != null) && (cRealm != hRealm)) {
  +            if (debug >= 4)
  +                log("Destroying MBean for Realm " + cRealm);
  +            MBeanUtils.destroyMBean(cRealm);
  +        }
  +
  +        // destroy the MBeans for the associated Valves
  +        if (context instanceof StandardContext) {
  +            Valve cValves[] = ((StandardContext)context).getValves();
  +            for (int l = 0; l < cValves.length; l++) {
  +                if (debug >= 4)
  +                    log("Destroying MBean for Valve " + cValves[l]);
  +                MBeanUtils.destroyMBean(cValves[l]);
  +            }
  +            
  +        }
  +
  +    }
  +
  +
  +    /**
  +     * Deregister the MBeans for the specified Host and its nested components.
  +     *
  +     * @param host Host for which to destroy MBeans
  +     *
  +     * @exception Exception if an exception is thrown during MBean creation
  +     */
  +    protected void destroyMBeans(Host host) throws Exception {
  +
  +        // Deregister the MBean for the Host itself
  +        if (debug >= 3) {
  +            log("Destroying MBean for Host " + host);
  +        }
  +        MBeanUtils.destroyMBean(host);
  +
  +        // Deregister the MBeans for the associated nested components
  +        Logger eLogger = host.getParent().getLogger();
  +        Logger hLogger = host.getLogger();
  +        if ((hLogger != null) && (hLogger != eLogger)) {
  +            if (debug >= 3)
  +                log("Destroying MBean for Logger " + hLogger);
  +            MBeanUtils.destroyMBean(hLogger);
  +        }
  +        Realm eRealm = host.getParent().getRealm();
  +        Realm hRealm = host.getRealm();
  +        if ((hRealm != null) && (hRealm != eRealm)) {
  +            if (debug >= 3)
  +                log("Destroying MBean for Realm " + hRealm);
  +            MBeanUtils.destroyMBean(hRealm);
  +        }
  +
  +        // Deregister the MBeans for the associated Valves
  +        if (host instanceof StandardHost) {
  +            Valve hValves[] = ((StandardHost)host).getValves();
  +            for (int k = 0; k < hValves.length; k++) {
  +                if (debug >= 3)
  +                    log("Destroying MBean for Valve " + hValves[k]);
  +                MBeanUtils.destroyMBean(hValves[k]);
  +            }
  +        }
  +
  +        // Deregister the MBeans for each child Context
  +        Container contexts[] = host.findChildren();
  +        for (int k = 0; k < contexts.length; k++) {
  +            destroyMBeans((Context) contexts[k]);
  +        }
  +
  +    }
  +
  +
  +    /**
        * Log a message and associated exception.
        *
        * @param message The message to be logged
  @@ -669,16 +779,14 @@
                   }
                   if (debug >= 4)
                       log("  Removing MBean for Context " + context);
  -                MBeanUtils.destroyMBean(context);
  -                ; // FIXME - child component MBeans?
  +                destroyMBeans(context);
                   if (context instanceof StandardContext) {
                       ((StandardContext) context).
                           removePropertyChangeListener(this);
                   }
               } else if (child instanceof Host) {
                   Host host = (Host) child;
  -                MBeanUtils.destroyMBean(host);
  -                ; // FIXME - child component MBeans?
  +                destroyMBeans(host);
                   if (host instanceof StandardHost) {
                       ((StandardHost) host).
                           removePropertyChangeListener(this);
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to