From do-not-reply at jboss.org Fri Jul 1 04:50:59 2011
Content-Type: multipart/mixed; boundary="===============0341267744266324391=="
MIME-Version: 1.0
From: do-not-reply at jboss.org
To: exo-jcr-commits at lists.jboss.org
Subject: [exo-jcr-commits] exo-jcr SVN: r4570 -
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management.
Date: Fri, 01 Jul 2011 04:50:59 -0400
Message-ID: <201107010850.p618ox9o006259@svn01.web.mwc.hst.phx2.redhat.com>
--===============0341267744266324391==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Author: nzamosenchuk
Date: 2011-07-01 04:50:58 -0400 (Fri, 01 Jul 2011)
New Revision: 4570
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/containe=
r/management/ManageableContainer.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/containe=
r/management/ManagementContextImpl.java
Log:
EXOJCR-1068 : Unregister all MBeans on container stop.
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/c=
ontainer/management/ManageableContainer.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/contain=
er/management/ManageableContainer.java 2011-06-30 14:54:37 UTC (rev 4569)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/contain=
er/management/ManageableContainer.java 2011-07-01 08:50:58 UTC (rev 4570)
@@ -52,8 +52,7 @@
* @author Julien Viet
* @version $Revision$
*/
-public class ManageableContainer
- extends CachingContainer
+public class ManageableContainer extends CachingContainer
{
=
/**
@@ -69,7 +68,7 @@
=
/** . */
private static final ThreadLocal hac=
k =3D
- new ThreadLocal();
+ new ThreadLocal();
=
/** . */
final ManagementContextImpl managementContext;
@@ -78,8 +77,9 @@
private MBeanServer server;
=
private volatile boolean objectNameSet;
+
private ObjectName objectName;
- =
+
/** . */
private final Set providers;
=
@@ -88,7 +88,7 @@
=
public ManageableContainer()
{
- this((PicoContainer) null);
+ this((PicoContainer)null);
}
=
public ManageableContainer(PicoContainer parent)
@@ -113,12 +113,12 @@
ManagementContextImpl parentCtx =3D null;
if (parent instanceof ManageableContainer)
{
- ManageableContainer manageableParent =3D (ManageableContainer) pa=
rent;
+ ManageableContainer manageableParent =3D (ManageableContainer)par=
ent;
parentCtx =3D manageableParent.managementContext;
}
=
//
- this.parent =3D parent instanceof ManageableContainer ? (ManageableC=
ontainer) parent : null;
+ this.parent =3D parent instanceof ManageableContainer ? (ManageableC=
ontainer)parent : null;
=
//
if (parentCtx !=3D null)
@@ -156,7 +156,7 @@
}
=
private static ManageableComponentAdapterFactory getComponentAdapterFac=
tory(
- ComponentAdapterFactory componentAdapterFactory)
+ ComponentAdapterFactory componentAdapterFactory)
{
ManageableComponentAdapterFactory factory =3D new ManageableComponen=
tAdapterFactory(componentAdapterFactory);
hack.set(factory);
@@ -196,7 +196,7 @@
{
MBeanScopingData scopingData =3D list.get(i - 1);
props.putAll(scopingData);
- } =
+ }
try
{
this.objectName =3D JMX.createObjectName("exo", props=
);
@@ -204,7 +204,7 @@
catch (Exception e)
{
LOG.error("Could not create the object name", e);
- } =
+ }
}
this.objectNameSet =3D true;
}
@@ -212,9 +212,9 @@
}
return objectName;
}
- =
+
public ComponentAdapter registerComponentInstance(Object componentKey, =
Object componentInstance)
- throws PicoRegistrationException
+ throws PicoRegistrationException
{
ComponentAdapter adapter =3D super.registerComponentInstance(compone=
ntKey, componentInstance);
if (managementContext !=3D null)
@@ -224,13 +224,36 @@
// Register if it is a management provider
if (componentInstance instanceof ManagementProvider)
{
- ManagementProvider provider =3D (ManagementProvider) component=
Instance;
+ ManagementProvider provider =3D (ManagementProvider)componentI=
nstance;
addProvider(provider);
}
}
return adapter;
}
=
+ @Override
+ public ComponentAdapter unregisterComponent(Object componentKey)
+ {
+ ComponentAdapter adapter =3D getComponentAdapter(componentKey);
+
+ if (managementContext !=3D null && adapter !=3D null)
+ {
+ managementContext.unregister(adapter.getComponentInstance(this));
+ }
+ return super.unregisterComponent(componentKey);
+ }
+
+ @Override
+ public void stop()
+ {
+ if (managementContext !=3D null)
+ {
+ // un-manage all registered MBeans
+ managementContext.unregisterAll();
+ }
+ super.stop();
+ };
+
/**
* Returns the list of the providers which are relevant for this contai=
ner.
*
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/c=
ontainer/management/ManagementContextImpl.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/contain=
er/management/ManagementContextImpl.java 2011-06-30 14:54:37 UTC (rev 4569)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/contain=
er/management/ManagementContextImpl.java 2011-07-01 08:50:58 UTC (rev 4570)
@@ -33,8 +33,10 @@
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
=
/**
* @author Julien Viet
@@ -237,6 +239,10 @@
}
}
=
+ /**
+ * =
+ * {@inheritDoc}
+ */
public void unregister(Object o)
{
ManagementContextImpl context =3D registrations.remove(o);
@@ -247,6 +253,26 @@
}
}
}
+ =
+ /**
+ * Unmanages (unregisters) all early registered MBeans in ManagementPro=
viders
+ */
+ public void unregisterAll()
+ {
+ Iterator> iterator =3D registra=
tions.entrySet().iterator();
+ while (iterator.hasNext())
+ {
+ Entry