You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by da...@apache.org on 2004/12/02 01:46:23 UTC
svn commit: r109410 - /geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/DependencyManager.java /geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java
Author: dain
Date: Wed Dec 1 16:46:21 2004
New Revision: 109410
URL: http://svn.apache.org/viewcvs?view=rev&rev=109410
Log:
Removed DependencyManager use of MBeanServer
Modified:
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/DependencyManager.java
geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java
Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/DependencyManager.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/DependencyManager.java?view=diff&rev=109410&p1=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/DependencyManager.java&r1=109409&p2=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/DependencyManager.java&r2=109410
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/DependencyManager.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/DependencyManager.java Wed Dec 1 16:46:21 2004
@@ -26,16 +26,8 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import javax.management.JMException;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerNotification;
-import javax.management.Notification;
-import javax.management.NotificationFilterSupport;
-import javax.management.NotificationListener;
import javax.management.ObjectName;
-import org.apache.geronimo.kernel.jmx.JMXUtil;
-
/**
* DependencyManager is the record keeper of the dependencies in Geronimo. The DependencyManager
* does not enforce any dependencies, it is simply a place where components can register their intent
@@ -47,13 +39,18 @@
* The names parent and child have no other meaning are just a convience to make the code readable.
*
* @version $Rev$ $Date$
- * @jmx:mbean
*/
-public class DependencyManager implements NotificationListener {
+public class DependencyManager {
+ /**
+ * The lifecycleMonitor informs us when gbeans go off line,
+ * so we can clean up the lingering dependencies.
+ */
+ private final LifecycleMonitor lifecycleMonitor;
+
/**
- * The mbean server we are registered with.
+ * Listenes for GBeans to unregister and removes all dependencies associated with the dependency
*/
- private MBeanServer mbeanServer;
+ private final LifecycleListener lifecycleListener = new DependecyManagerLifecycleListener();
/**
* A map from child names to a list of parents.
@@ -71,21 +68,14 @@
*/
private final Map startHoldsMap = new HashMap();
- public DependencyManager(MBeanServer mbeanServer) throws Exception {
- assert mbeanServer != null;
- this.mbeanServer = mbeanServer;
- NotificationFilterSupport mbeanServerFilter = new NotificationFilterSupport();
- mbeanServerFilter.enableType(MBeanServerNotification.UNREGISTRATION_NOTIFICATION);
- mbeanServer.addNotificationListener(JMXUtil.DELEGATE_NAME, this, mbeanServerFilter, null);
+ public DependencyManager(LifecycleMonitor lifecycleMonitor) throws Exception {
+ assert lifecycleMonitor != null;
+ this.lifecycleMonitor = lifecycleMonitor;
+ lifecycleMonitor.addLifecycleListener(lifecycleListener, new ObjectName("*:*"));
}
public synchronized void close() {
- try {
- mbeanServer.removeNotificationListener(JMXUtil.DELEGATE_NAME, this);
- } catch (JMException ignored) {
- // no big deal... just good citizen clean up code
- }
- mbeanServer = null;
+ lifecycleMonitor.removeLifecycleListener(lifecycleListener);
childToParentMap.clear();
parentToChildMap.clear();
startHoldsMap.clear();
@@ -275,16 +265,13 @@
return null;
}
- // todo convert this over to a kernel life cycle listener.... if possible
- public void handleNotification(Notification n, Object handback) {
- String type = n.getType();
- if (MBeanServerNotification.UNREGISTRATION_NOTIFICATION.equals(type)) {
- MBeanServerNotification notification = (MBeanServerNotification) n;
- ObjectName source = notification.getMBeanName();
- synchronized (this) {
- removeAllDependencies(source);
- removeAllStartHolds(source);
+ private class DependecyManagerLifecycleListener extends LifecycleAdapter {
+ public void unloaded(ObjectName objectName) {
+ synchronized (DependencyManager.this) {
+ removeAllDependencies(objectName);
+ removeAllStartHolds(objectName);
}
+
}
}
}
Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java
Url: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java?view=diff&rev=109410&p1=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java&r1=109409&p2=geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java&r2=109410
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/Kernel.java Wed Dec 1 16:46:21 2004
@@ -560,7 +560,7 @@
mbServer = MBeanServerFactory.createMBeanServer(domainName);
mbServer.registerMBean(this, KERNEL);
lifecycleMonitor = new LifecycleMonitor(mbServer);
- dependencyManager = new DependencyManager(mbServer);
+ dependencyManager = new DependencyManager(lifecycleMonitor);
proxyManager = new ProxyManager(this);
// set up the data for the new configuration manager instance