[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