You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2018/09/14 15:22:40 UTC

[10/12] tomee git commit: Cleanup JMX resources on destroy

Cleanup JMX resources on destroy


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/3d337273
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/3d337273
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/3d337273

Branch: refs/heads/master
Commit: 3d337273cb7fef328ce7cc4ca9fe2b369cae96c7
Parents: 612b7ab
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Wed Sep 12 15:59:05 2018 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Wed Sep 12 15:59:05 2018 +0100

----------------------------------------------------------------------
 .../openejb/assembler/classic/Assembler.java    | 53 +++++++++++++-------
 .../assembler/classic/ResourcesJMXTest.java     |  4 +-
 2 files changed, 37 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/3d337273/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index 1d45c08..396f632 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -2126,9 +2126,14 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
                     ExecutorService.class.cast(resourceAdapter.pool).shutdownNow();
                 }
                 resourceAdapter.ra.stop();
+
+                // remove associated JMX object
             } catch (final Throwable t) {
                 logger.fatal("ResourceAdapter Shutdown Failed: " + name, t);
             }
+
+            removeResourceMBean(name, "ResourceAdapter");
+
         } else if (object instanceof ResourceAdapter) {
             final ResourceAdapter resourceAdapter = (ResourceAdapter) object;
             try {
@@ -2142,6 +2147,9 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
             } catch (final Throwable t) {
                 logger.fatal("ResourceAdapter Shutdown Failed: " + name, t);
             }
+
+            removeResourceMBean(name, "ResourceAdapter");
+
         } else if (DataSourceFactory.knows(object)) {
             logger.info("Closing DataSource: " + name);
 
@@ -2161,22 +2169,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
                 logger.debug("Not processing resource on destroy: " + className, e);
             }
 
-            // remove associated JMX object
-            final ObjectNameBuilder jmxName = new ObjectNameBuilder("openejb.management");
-            jmxName.set("J2EEServer", "openejb");
-            jmxName.set("J2EEApplication", null);
-            jmxName.set("j2eeType", "");
-            jmxName.set("name",name);
-
-            final MBeanServer server = LocalMBeanServer.get();
-            try {
-                final ObjectName objectName = jmxName.set("j2eeType", "ConnectionFactory").build();
-                if (server.isRegistered(objectName)) {
-                    server.unregisterMBean(objectName);
-                }
-            } catch (final Exception e) {
-                logger.error("Unable to unregister MBean ", e);
-            }
+            removeResourceMBean(name, "ConnectionFactory");
 
         } else if (DestroyableResource.class.isInstance(object)) {
             try {
@@ -2184,8 +2177,32 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
             } catch (final RuntimeException e) {
                 logger.error(e.getMessage(), e);
             }
-        } else if (logger.isDebugEnabled() && !DataSource.class.isInstance(object)) {
-            logger.debug("Not processing resource on destroy: " + className);
+
+            removeResourceMBean(name, "Resource");
+        } else if (!DataSource.class.isInstance(object)) {
+            removeResourceMBean(name, "Resource");
+
+            if (logger.isDebugEnabled()) {
+                logger.debug("Not processing resource on destroy: " + className);
+            }
+        }
+    }
+
+    private void removeResourceMBean(String name, String type) {
+        final ObjectNameBuilder jmxName = new ObjectNameBuilder("openejb.management");
+        jmxName.set("J2EEServer", "openejb");
+        jmxName.set("J2EEApplication", null);
+        jmxName.set("j2eeType", "");
+        jmxName.set("name",name);
+
+        final MBeanServer server = LocalMBeanServer.get();
+        try {
+            final ObjectName objectName = jmxName.set("j2eeType", type).build();
+            if (server.isRegistered(objectName)) {
+                server.unregisterMBean(objectName);
+            }
+        } catch (final Exception e) {
+            logger.error("Unable to unregister MBean ", e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/3d337273/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ResourcesJMXTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ResourcesJMXTest.java b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ResourcesJMXTest.java
index 15c86a5..6b81600 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ResourcesJMXTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/assembler/classic/ResourcesJMXTest.java
@@ -62,7 +62,7 @@ public class ResourcesJMXTest extends TestCase {
 
         final ResourceInfo testResource = new ResourceInfo();
         testResource.id = "testResource";
-        testResource.className = FakeResouce.class.getName();
+        testResource.className = FakeResource.class.getName();
 
         final Properties p = new Properties();
         p.put("host", "localhost");
@@ -151,7 +151,7 @@ public class ResourcesJMXTest extends TestCase {
         }
     }
 
-    public static class FakeResouce {
+    public static class FakeResource {
         private String host;
         private int port;
         private String parameter;