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;