[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jboss-cvs-commits
Subject:    [jboss-cvs] contrib/jetty/src/main/org/mortbay/util/jmx ModelMBeanImpl.java LogMBean.java
From:       Jules Gosnell <jules_gosnell () users ! sourceforge ! net>
Date:       2002-12-31 12:30:29
[Download RAW message or body]

  User: jules_gosnell
  Date: 02/12/31 04:30:28

  Modified:    jetty/src/main/org/mortbay/util/jmx Tag: Branch_3_0
                        ModelMBeanImpl.java LogMBean.java
  Log:
   + Fixed stop/start handling of servlet context
   + Reuse empty LogSink slots.
   + HTAccessHandler checks realm as well as htpassword.
   + Clear context listeners after stop.
   + Clear context attributes after stop.
   + Use requestedSessionId as default session ID.
   + Added MBeans for handlers
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.6.2.7   +100 -9    contrib/jetty/src/main/org/mortbay/util/jmx/ModelMBeanImpl.java
  
  Index: ModelMBeanImpl.java
  ===================================================================
  RCS file: /cvsroot/jboss/contrib/jetty/src/main/org/mortbay/util/jmx/ModelMBeanImpl.java,v
  retrieving revision 1.6.2.6
  retrieving revision 1.6.2.7
  diff -u -r1.6.2.6 -r1.6.2.7
  --- ModelMBeanImpl.java	28 Dec 2002 15:08:35 -0000	1.6.2.6
  +++ ModelMBeanImpl.java	31 Dec 2002 12:30:26 -0000	1.6.2.7
  @@ -1,6 +1,6 @@
   // ========================================================================
   // Copyright (c) 1999 Mort Bay Consulting (Australia) Pty. Ltd.
  -// $Id: ModelMBeanImpl.java,v 1.6.2.6 2002/12/28 15:08:35 jules_gosnell Exp $
  +// $Id: ModelMBeanImpl.java,v 1.6.2.7 2002/12/31 12:30:26 jules_gosnell Exp $
   // ========================================================================
   
   package org.mortbay.util.jmx;
  @@ -10,6 +10,7 @@
   import java.lang.reflect.Modifier;
   import java.util.ArrayList;
   import java.util.HashMap;
  +import java.util.Map;
   import java.util.Iterator;
   import java.util.Locale;
   import java.util.ResourceBundle;
  @@ -67,7 +68,7 @@
    * defined.
    * </UL>
    *
  - * @version $Revision: 1.6.2.6 $
  + * @version $Revision: 1.6.2.7 $
    * @author Greg Wilkins (gregw)
    */
   public class ModelMBeanImpl
  @@ -101,14 +102,14 @@
       private ObjectName _objectName;
       
       private boolean _dirty=false;
  -    private HashMap _getter = new HashMap();
  -    private HashMap _setter = new HashMap();
  -    private HashMap _method = new HashMap();
  -    private ArrayList _attributes = new ArrayList();
  -    private ArrayList _operations = new ArrayList();
  -    private ArrayList _notifications = new ArrayList();
  +    private HashMap _getter = new HashMap(4);
  +    private HashMap _setter = new HashMap(4);
  +    private HashMap _method = new HashMap(4);
  +    private ArrayList _attributes = new ArrayList(4);
  +    private ArrayList _operations = new ArrayList(4);
  +    private ArrayList _notifications = new ArrayList(4);
       private String _baseObjectName=null;
  -
  +    private Map _components = new HashMap(4);
   
       /* ------------------------------------------------------------ */
       /* ------------------------------------------------------------ */
  @@ -1017,6 +1018,8 @@
       public void preDeregister()
       {
           Log.event("Deregister "+_objectName);
  +        getComponentMBeans(null,_components);
  +        _components.clear();
       }
       
       /* ------------------------------------------------------------ */
  @@ -1110,5 +1113,93 @@
           }
   
           return oName;
  +    }
  +
  +
  +    /* ------------------------------------------------------------ */
  +    /** Get Component MBeans.
  +     * Creates, registers and deregisters MBeans for an array of components.
  +     * On each call the passed map is used to determine components that have
  +     * already been registers and those that need to be deregistered.
  +     * @param components the components.
  +     * @param map A map of previously registered components to object
  +     * name. If null is passed, a default map for the mbean is used.
  +     * @return An array of ObjectNames for each component. 
  +     */
  +    protected ObjectName[] getComponentMBeans(Object[] components, Map map)
  +    {
  +        if (map==null)
  +            map=_components;
  +        ObjectName[] beans=null;   
  +        if (components==null)
  +            beans = new ObjectName[0];
  +        else
  +        {
  +            beans = new ObjectName[components==null?0:components.length];
  +
  +            // Add new beans
  +            for (int i=0;i<components.length;i++)
  +            {
  +                ObjectName on = (ObjectName)map.get(components[i]);
  +                if (on==null)
  +                {
  +                    ModelMBean mbean = mbeanFor(components[i]);
  +                    if (mbean==null)
  +                        Code.warning("No mbean for "+components[i]);
  +                    else
  +                    {
  +                        try
  +                        {
  +                            if (mbean instanceof ModelMBeanImpl)
  +                            {
  +                                ((ModelMBeanImpl)mbean).setBaseObjectName(getObjectName().toString());
  +                                on=getMBeanServer().registerMBean(mbean,null).getObjectName();
  +                            }
  +                            else
  +                            {
  +                                on=uniqueObjectName(getMBeanServer(),
  +                                                    components[i],
  +                                                    getObjectName().toString());
  +                                on=getMBeanServer().registerMBean(mbean,on).getObjectName();
  +                            }
  +                            map.put(components[i],on);
  +                        }
  +                        catch (Exception e)
  +                        {
  +                            Code.warning(e);
  +                        }
  +                    }
  +                }
  +                beans[i]=on;
  +            }
  +        }
  +        
  +        // Delete old beans
  +        if (components==null || map.size()>components.length)
  +        {
  +            Object[] to_delete=new Object[map.size()-beans.length];
  +            int d=0;
  +            Iterator iter = map.keySet().iterator();
  +            keys:
  +            while(iter.hasNext())
  +            {
  +                Object bean = iter.next();
  +                if (components!=null)
  +                {
  +                    for(int i=0;i<components.length;i++)
  +                        if (components[i]==bean)
  +                            continue keys;
  +                }
  +                to_delete[d++]=bean;
  +            }
  +
  +            for (;d-->0;)
  +            {
  +                try{getMBeanServer().unregisterMBean((ObjectName)map.remove(to_delete[d]));}
  +                catch (Exception e) {Code.warning(e);}
  +            }
  +        }
  +        
  +        return beans;
       }
   }
  
  
  
  1.6.2.7   +9 -102    contrib/jetty/src/main/org/mortbay/util/jmx/LogMBean.java
  
  Index: LogMBean.java
  ===================================================================
  RCS file: /cvsroot/jboss/contrib/jetty/src/main/org/mortbay/util/jmx/LogMBean.java,v
  retrieving revision 1.6.2.6
  retrieving revision 1.6.2.7
  diff -u -r1.6.2.6 -r1.6.2.7
  --- LogMBean.java	28 Dec 2002 15:08:35 -0000	1.6.2.6
  +++ LogMBean.java	31 Dec 2002 12:30:27 -0000	1.6.2.7
  @@ -1,6 +1,6 @@
   // ========================================================================
   // Copyright (c) 1999 Mort Bay Consulting (Australia) Pty. Ltd.
  -// $Id: LogMBean.java,v 1.6.2.6 2002/12/28 15:08:35 jules_gosnell Exp $
  +// $Id: LogMBean.java,v 1.6.2.7 2002/12/31 12:30:27 jules_gosnell Exp $
   // ========================================================================
   
   package org.mortbay.util.jmx;
  @@ -22,7 +22,6 @@
   public class LogMBean extends ModelMBeanImpl
   {
       Log _log;
  -    HashMap _sinks=new HashMap();
       
       /* ------------------------------------------------------------ */
       /** Constructor. 
  @@ -53,7 +52,7 @@
       {
           super.defineManagedResource();
   
  -        defineAttribute("logSinks",false);
  +        defineAttribute("logSinks",READ_ONLY,ON_MBEAN);
           defineOperation("add",
                           new String[]{STRING},
                           IMPACT_ACTION);
  @@ -72,113 +71,21 @@
       /* ------------------------------------------------------------ */
       public void postRegister(Boolean ok)
       {
  -        super.postRegister(ok);    
  +        super.postRegister(ok);
           if (ok.booleanValue())
  -            rescanSinks();
  -    }    
  -
  -    /* ------------------------------------------------------------ */
  -    public void preDeregister()
  -    {
  -        super.preDeregister();
  -
  -        ArrayList sinkKeys= new ArrayList(_sinks.keySet());
  -        Iterator iter=sinkKeys.iterator();
  -        while(iter.hasNext())
  -        {
  -            try
  -            {
  -                LogSink sink=(LogSink)iter.next();
  -                LogSinkMBean bean=(LogSinkMBean)_sinks.remove(sink);
  -                getMBeanServer().unregisterMBean(bean.getObjectName());
  -            }
  -            catch(Exception e)
  -            {
  -                Code.warning(e);
  -            }
  -        }
  -    }
  -    
  -    /* ------------------------------------------------------------ */
  -    public Object getAttribute(String name)
  -        throws AttributeNotFoundException,
  -               MBeanException,
  -               ReflectionException
  -    {
  -        if ("logSinks".equals(name))
  -            rescanSinks();
  -        return super.getAttribute(name);
  -    }
  -    
  -    /* ------------------------------------------------------------ */
  -    public Object invoke(String name, Object[] params, String[] signature)
  -        throws MBeanException,
  -               ReflectionException
  -    {
  -        Object o=super.invoke(name,params,signature);
  -        if ("add".equals(name))
  -            rescanSinks();
  -        return o;
  +            getLogSinks();
       }
       
       /* ------------------------------------------------------------ */
  -    private synchronized void rescanSinks()
  +    public void postDeregister()
       {
  -        LogSink[] sinks = _log.getLogSinks();
  -
  -        // Add new beans
  -        for(int i=0;i<sinks.length;i++)
  -        {
  -            LogSink sink=sinks[i];
  -
  -            ModelMBean bean=(LogSinkMBean)_sinks.get(sink);
  -            if (bean==null)
  -            {
  -                try
  -                {
  -                    bean = mbeanFor(sink);
  -                    getMBeanServer().registerMBean(bean,new ObjectName(getObjectName()+",sink="+i));
  -                    _sinks.put(sink,bean);
  -                }
  -                catch(Exception e)
  -                {
  -                    Code.warning(e);
  -                }
  -            }
  -        }
  -
  -        // delete old beans
  -        if (_sinks.size()!=sinks.length)
  -        {
  -            Iterator iter=_sinks.keySet().iterator();
  -        keys:
  -            while(iter.hasNext())
  -            {
  -                try
  -                {
  -                    LogSink sink=(LogSink)iter.next();
  -                    for(int i=0;i<sinks.length;i++)
  -                        if(sink==sinks[i]) continue keys;
  -                
  -                    LogSinkMBean bean=(LogSinkMBean)_sinks.remove(sink);
  -                    
  -                    getMBeanServer().unregisterMBean(bean.getObjectName());
  -                }
  -                catch(Exception e)
  -                {
  -                    Code.warning(e);
  -                }
  -            }
  -        }
  +        super.postDeregister();
  +        _log=null;
       }
       
       /* ------------------------------------------------------------ */
  -    public void postDeregister()
  +    public ObjectName[] getLogSinks()
       {
  -        _log=null;
  -        if (_sinks!=null)
  -            _sinks.clear();
  -        _sinks=null;
  +        return getComponentMBeans(_log.getLogSinks(),null);
       }
  -    
   }
  
  
  


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
jboss-cvs-commits mailing list
jboss-cvs-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-cvs-commits
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic