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/17 13:45:47 UTC

[2/2] tomee git commit: Porting JMX changes from master

Porting JMX changes from master


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

Branch: refs/heads/tomee-1.7.x
Commit: f59e9bb92ae1b66237be1b7bd7d4801a0ca62d77
Parents: 4634c31
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Mon Sep 17 14:43:36 2018 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Mon Sep 17 14:43:36 2018 +0100

----------------------------------------------------------------------
 .../openejb/assembler/classic/Assembler.java    | 33 ++++++++++++++++++--
 .../openejb/monitoring/MBeanPojoWrapper.java    |  4 +--
 2 files changed, 33 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/f59e9bb9/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 18902d9..e1cd38c 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
@@ -1831,6 +1831,8 @@ 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 (ResourceAdapter.class.isInstance(object)) {
             final ResourceAdapter resourceAdapter = ResourceAdapter.class.cast(object);
             try {
@@ -1844,6 +1846,8 @@ 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)) {
 
             int timeout;
@@ -1900,19 +1904,44 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
             } catch (final Exception e) {
                 logger.debug("Not processing resource on destroy: " + className, e);
             }
+
+            removeResourceMBean(name, "ConnectionFactory");
         } else if (DestroyableResource.class.isInstance(object)) {
             try {
                 DestroyableResource.class.cast(object).destroyResource();
             } 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)) {
+            if (logger.isDebugEnabled()) {
+                logger.debug("Not processing resource on destroy: " + className);
+            }
+
+            removeResourceMBean(name, "Resource");
         }
 
         callPreDestroy(name, object);
         removeResourceInfo(name);
     }
+
+    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);
+        }
+    }
     
     private void callPreDestroy(final String name, final Object object) {
         if (object == null) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/f59e9bb9/container/openejb-core/src/main/java/org/apache/openejb/monitoring/MBeanPojoWrapper.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/monitoring/MBeanPojoWrapper.java b/container/openejb-core/src/main/java/org/apache/openejb/monitoring/MBeanPojoWrapper.java
index 70367f86..85aa872 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/monitoring/MBeanPojoWrapper.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/monitoring/MBeanPojoWrapper.java
@@ -36,7 +36,7 @@ public class MBeanPojoWrapper implements DynamicMBean {
     private final Object delegate;
     private final String name;
     private MBeanInfo info;
-    private final Map<String, PropertyDescriptor> attributeMap = new HashMap<>();
+    private final Map<String, PropertyDescriptor> attributeMap = new HashMap<String, PropertyDescriptor>();
 
     private static final Set<Class<?>> SUPPORTED_PROPERTY_TYPES = new HashSet<Class<?>>() {
         {
@@ -70,7 +70,7 @@ public class MBeanPojoWrapper implements DynamicMBean {
     }
 
     private void scan(Class clazz) {
-        final List<MBeanAttributeInfo> mBeanAttributeInfoList = new ArrayList<>();
+        final List<MBeanAttributeInfo> mBeanAttributeInfoList = new ArrayList<MBeanAttributeInfo>();
 
         try {
             final BeanInfo beanInfo = Introspector.getBeanInfo(clazz);