You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2012/06/13 11:25:29 UTC
svn commit: r1349705 - in /karaf/branches/karaf-2.3.x:
admin/management/src/main/resources/OSGI-INF/blueprint/
diagnostic/management/src/main/resources/OSGI-INF/blueprint/
features/management/src/main/java/org/apache/karaf/features/management/internal/...
Author: gnodet
Date: Wed Jun 13 09:25:28 2012
New Revision: 1349705
URL: http://svn.apache.org/viewvc?rev=1349705&view=rev
Log:
[KARAF-1538] Exceptions when unregistering jmx means during a restart
Modified:
karaf/branches/karaf-2.3.x/admin/management/src/main/resources/OSGI-INF/blueprint/admin-management.xml
karaf/branches/karaf-2.3.x/diagnostic/management/src/main/resources/OSGI-INF/blueprint/diagnostic-management.xml
karaf/branches/karaf-2.3.x/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java
karaf/branches/karaf-2.3.x/features/management/src/main/resources/OSGI-INF/blueprint/features-management.xml
karaf/branches/karaf-2.3.x/management/mbeans/bundles/src/main/resources/OSGI-INF/blueprint/bundles-management.xml
karaf/branches/karaf-2.3.x/management/mbeans/config/src/main/resources/OSGI-INF/blueprint/config-management.xml
karaf/branches/karaf-2.3.x/management/mbeans/dev/src/main/resources/OSGI-INF/blueprint/dev-management.xml
karaf/branches/karaf-2.3.x/management/mbeans/log/src/main/resources/OSGI-INF/blueprint/log-management.xml
karaf/branches/karaf-2.3.x/management/mbeans/obr/src/main/resources/OSGI-INF/blueprint/obr-management.xml
karaf/branches/karaf-2.3.x/management/mbeans/packages/src/main/resources/OSGI-INF/blueprint/packages-management.xml
karaf/branches/karaf-2.3.x/management/mbeans/services/src/main/resources/OSGI-INF/blueprint/services-management.xml
karaf/branches/karaf-2.3.x/management/mbeans/system/src/main/resources/OSGI-INF/blueprint/system-management.xml
karaf/branches/karaf-2.3.x/management/mbeans/web/src/main/resources/OSGI-INF/blueprint/web-management.xml
karaf/branches/karaf-2.3.x/management/server/src/main/java/org/apache/karaf/management/MBeanRegistrer.java
Modified: karaf/branches/karaf-2.3.x/admin/management/src/main/resources/OSGI-INF/blueprint/admin-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/admin/management/src/main/resources/OSGI-INF/blueprint/admin-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/admin/management/src/main/resources/OSGI-INF/blueprint/admin-management.xml (original)
+++ karaf/branches/karaf-2.3.x/admin/management/src/main/resources/OSGI-INF/blueprint/admin-management.xml Wed Jun 13 09:25:28 2012
@@ -29,7 +29,7 @@
<property name="adminService" ref="adminService" />
</bean>
- <bean id="mbeanRegister" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegister" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=admin,name=${karaf.name}"
Modified: karaf/branches/karaf-2.3.x/diagnostic/management/src/main/resources/OSGI-INF/blueprint/diagnostic-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/diagnostic/management/src/main/resources/OSGI-INF/blueprint/diagnostic-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/diagnostic/management/src/main/resources/OSGI-INF/blueprint/diagnostic-management.xml (original)
+++ karaf/branches/karaf-2.3.x/diagnostic/management/src/main/resources/OSGI-INF/blueprint/diagnostic-management.xml Wed Jun 13 09:25:28 2012
@@ -30,7 +30,7 @@
<property name="providers" ref="providers" />
</bean>
- <bean id="mbeanRegister" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegister" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=diagnostic,name=${karaf.name}"
Modified: karaf/branches/karaf-2.3.x/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java (original)
+++ karaf/branches/karaf-2.3.x/features/management/src/main/java/org/apache/karaf/features/management/internal/FeaturesServiceMBeanImpl.java Wed Jun 13 09:25:28 2012
@@ -18,13 +18,11 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.List;
-
import javax.management.MBeanNotificationInfo;
import javax.management.MBeanRegistration;
import javax.management.MBeanServer;
import javax.management.NotCompliantMBeanException;
import javax.management.Notification;
-import javax.management.NotificationBroadcasterSupport;
import javax.management.ObjectName;
import javax.management.openmbean.TabularData;
@@ -71,17 +69,32 @@ public class FeaturesServiceMBeanImpl ex
}
public void postRegister(Boolean registrationDone) {
- registration = bundleContext.registerService(FeaturesListener.class.getName(),
- getFeaturesListener(), new Hashtable());
+ registerService();
}
- public void preDeregister() throws Exception {
- registration.unregister();
+ public void preDeregister() {
+ unregisterService();
}
public void postDeregister() {
}
+ public void registerService() {
+ unregisterService();
+ registration = bundleContext.registerService(FeaturesListener.class.getName(),
+ getFeaturesListener(), new Hashtable());
+ }
+
+ public void unregisterService() {
+ if (registration != null) {
+ try {
+ registration.unregister();
+ } finally {
+ registration = null;
+ }
+ }
+ }
+
/**
* {@inheritDoc}
*/
Modified: karaf/branches/karaf-2.3.x/features/management/src/main/resources/OSGI-INF/blueprint/features-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/features/management/src/main/resources/OSGI-INF/blueprint/features-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/features/management/src/main/resources/OSGI-INF/blueprint/features-management.xml (original)
+++ karaf/branches/karaf-2.3.x/features/management/src/main/resources/OSGI-INF/blueprint/features-management.xml Wed Jun 13 09:25:28 2012
@@ -25,12 +25,12 @@
<reference-listener ref="mbeanRegister" bind-method="registerMBeanServer" unbind-method="unregisterMBeanServer" />
</reference>
- <bean id="mbeanImpl" class="org.apache.karaf.features.management.internal.FeaturesServiceMBeanImpl">
+ <bean id="mbeanImpl" class="org.apache.karaf.features.management.internal.FeaturesServiceMBeanImpl" destroy-method="unregisterService">
<property name="bundleContext" ref="blueprintBundleContext" />
<property name="featuresService" ref="featuresService" />
</bean>
- <bean id="mbeanRegister" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegister" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=features,name=${karaf.name}"
Modified: karaf/branches/karaf-2.3.x/management/mbeans/bundles/src/main/resources/OSGI-INF/blueprint/bundles-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/management/mbeans/bundles/src/main/resources/OSGI-INF/blueprint/bundles-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/management/mbeans/bundles/src/main/resources/OSGI-INF/blueprint/bundles-management.xml (original)
+++ karaf/branches/karaf-2.3.x/management/mbeans/bundles/src/main/resources/OSGI-INF/blueprint/bundles-management.xml Wed Jun 13 09:25:28 2012
@@ -25,7 +25,7 @@
</bean>
<!-- MBean Registrer -->
- <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=bundles,name=${karaf.name}" key-ref="bundlesMBean"/>
Modified: karaf/branches/karaf-2.3.x/management/mbeans/config/src/main/resources/OSGI-INF/blueprint/config-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/management/mbeans/config/src/main/resources/OSGI-INF/blueprint/config-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/management/mbeans/config/src/main/resources/OSGI-INF/blueprint/config-management.xml (original)
+++ karaf/branches/karaf-2.3.x/management/mbeans/config/src/main/resources/OSGI-INF/blueprint/config-management.xml Wed Jun 13 09:25:28 2012
@@ -34,7 +34,7 @@
<reference-list id="artifactInstallers" interface="org.apache.felix.fileinstall.ArtifactInstaller" availability="optional" />
<!-- Register MBean in the MBeanServer -->
- <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=config,name=${karaf.name}" key-ref="configMBean"/>
Modified: karaf/branches/karaf-2.3.x/management/mbeans/dev/src/main/resources/OSGI-INF/blueprint/dev-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/management/mbeans/dev/src/main/resources/OSGI-INF/blueprint/dev-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/management/mbeans/dev/src/main/resources/OSGI-INF/blueprint/dev-management.xml (original)
+++ karaf/branches/karaf-2.3.x/management/mbeans/dev/src/main/resources/OSGI-INF/blueprint/dev-management.xml Wed Jun 13 09:25:28 2012
@@ -25,7 +25,7 @@
</bean>
<!-- Register Dev MBean in the MBean Server -->
- <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=dev,name=${karaf.name}" key-ref="devMBean"/>
Modified: karaf/branches/karaf-2.3.x/management/mbeans/log/src/main/resources/OSGI-INF/blueprint/log-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/management/mbeans/log/src/main/resources/OSGI-INF/blueprint/log-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/management/mbeans/log/src/main/resources/OSGI-INF/blueprint/log-management.xml (original)
+++ karaf/branches/karaf-2.3.x/management/mbeans/log/src/main/resources/OSGI-INF/blueprint/log-management.xml Wed Jun 13 09:25:28 2012
@@ -25,7 +25,7 @@
</bean>
<!-- Register MBean in the MBean Server -->
- <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=log,name=${karaf.name}" key-ref="logMBean"/>
Modified: karaf/branches/karaf-2.3.x/management/mbeans/obr/src/main/resources/OSGI-INF/blueprint/obr-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/management/mbeans/obr/src/main/resources/OSGI-INF/blueprint/obr-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/management/mbeans/obr/src/main/resources/OSGI-INF/blueprint/obr-management.xml (original)
+++ karaf/branches/karaf-2.3.x/management/mbeans/obr/src/main/resources/OSGI-INF/blueprint/obr-management.xml Wed Jun 13 09:25:28 2012
@@ -26,7 +26,7 @@
</bean>
<!-- MBean Registrer -->
- <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=obr,name=${karaf.name}" key-ref="obrMBean"/>
Modified: karaf/branches/karaf-2.3.x/management/mbeans/packages/src/main/resources/OSGI-INF/blueprint/packages-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/management/mbeans/packages/src/main/resources/OSGI-INF/blueprint/packages-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/management/mbeans/packages/src/main/resources/OSGI-INF/blueprint/packages-management.xml (original)
+++ karaf/branches/karaf-2.3.x/management/mbeans/packages/src/main/resources/OSGI-INF/blueprint/packages-management.xml Wed Jun 13 09:25:28 2012
@@ -25,7 +25,7 @@
</bean>
<!-- MBean Registrer -->
- <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=packages,name=${karaf.name}" key-ref="packagesMBean"/>
Modified: karaf/branches/karaf-2.3.x/management/mbeans/services/src/main/resources/OSGI-INF/blueprint/services-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/management/mbeans/services/src/main/resources/OSGI-INF/blueprint/services-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/management/mbeans/services/src/main/resources/OSGI-INF/blueprint/services-management.xml (original)
+++ karaf/branches/karaf-2.3.x/management/mbeans/services/src/main/resources/OSGI-INF/blueprint/services-management.xml Wed Jun 13 09:25:28 2012
@@ -25,7 +25,7 @@
</bean>
<!-- MBean Registrer -->
- <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=services,name=${karaf.name}" key-ref="servicesMBean"/>
Modified: karaf/branches/karaf-2.3.x/management/mbeans/system/src/main/resources/OSGI-INF/blueprint/system-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/management/mbeans/system/src/main/resources/OSGI-INF/blueprint/system-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/management/mbeans/system/src/main/resources/OSGI-INF/blueprint/system-management.xml (original)
+++ karaf/branches/karaf-2.3.x/management/mbeans/system/src/main/resources/OSGI-INF/blueprint/system-management.xml Wed Jun 13 09:25:28 2012
@@ -25,7 +25,7 @@
</bean>
<!-- MBean Registrer -->
- <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=system,name=${karaf.name}" key-ref="systemMBean"/>
Modified: karaf/branches/karaf-2.3.x/management/mbeans/web/src/main/resources/OSGI-INF/blueprint/web-management.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/management/mbeans/web/src/main/resources/OSGI-INF/blueprint/web-management.xml?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/management/mbeans/web/src/main/resources/OSGI-INF/blueprint/web-management.xml (original)
+++ karaf/branches/karaf-2.3.x/management/mbeans/web/src/main/resources/OSGI-INF/blueprint/web-management.xml Wed Jun 13 09:25:28 2012
@@ -25,7 +25,7 @@
</bean>
<!-- MBean Registrer -->
- <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer">
+ <bean id="mbeanRegistrer" class="org.apache.karaf.management.MBeanRegistrer" init-method="init" destroy-method="destroy">
<property name="mbeans">
<map>
<entry value="org.apache.karaf:type=web,name=${karaf.name}" key-ref="webMBean"/>
Modified: karaf/branches/karaf-2.3.x/management/server/src/main/java/org/apache/karaf/management/MBeanRegistrer.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/management/server/src/main/java/org/apache/karaf/management/MBeanRegistrer.java?rev=1349705&r1=1349704&r2=1349705&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/management/server/src/main/java/org/apache/karaf/management/MBeanRegistrer.java (original)
+++ karaf/branches/karaf-2.3.x/management/server/src/main/java/org/apache/karaf/management/MBeanRegistrer.java Wed Jun 13 09:25:28 2012
@@ -16,8 +16,9 @@
*/
package org.apache.karaf.management;
+import java.util.HashSet;
import java.util.Map;
-
+import java.util.Set;
import javax.management.JMException;
import javax.management.MBeanServer;
import javax.management.ObjectName;
@@ -27,6 +28,7 @@ public class MBeanRegistrer {
private MBeanServer mbeanServer;
private Map<Object, String> mbeans;
+ private Set<String> registered = new HashSet<String>();
public void setMbeans(Map<Object, String> mbeans) {
this.mbeans = mbeans;
@@ -49,20 +51,26 @@ public class MBeanRegistrer {
registerMBeans();
}
+ public void destroy() throws Exception {
+ unregisterMBeans();
+ }
+
protected void registerMBeans() throws JMException {
if (mbeanServer != null && mbeans != null) {
for (Map.Entry<Object, String> entry : mbeans.entrySet()) {
String value = parseProperty(entry.getValue());
mbeanServer.registerMBean(entry.getKey(), new ObjectName(value));
+ registered.add(value);
}
}
}
protected void unregisterMBeans() throws JMException {
if (mbeanServer != null && mbeans != null) {
- for (Map.Entry<Object, String> entry : mbeans.entrySet()) {
- String value = parseProperty(entry.getValue());
- mbeanServer.unregisterMBean(new ObjectName(value));
+ while (!registered.isEmpty()) {
+ String name = registered.iterator().next();
+ mbeanServer.unregisterMBean(new ObjectName(name));
+ registered.remove(name);
}
}
}