Author: kfujino
Date: Wed Jan 31 05:35:13 2018
New Revision: 1822744

URL: http://svn.apache.org/viewvc?rev=1822744&view=rev
Log:
Enhance the JMX support for jdbc-pool in order to expose PooledConnection and 
JdbcInterceptors.

Added:
    
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/JmxUtil.java
   (with props)
Modified:
    
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java?rev=1822744&r1=1822743&r2=1822744&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java
 Wed Jan 31 05:35:13 2018
@@ -20,9 +20,12 @@ import java.util.concurrent.ConcurrentLi
 import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.management.MBeanNotificationInfo;
+import javax.management.MBeanRegistration;
+import javax.management.MBeanServer;
 import javax.management.Notification;
 import javax.management.NotificationBroadcasterSupport;
 import javax.management.NotificationListener;
+import javax.management.ObjectName;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
@@ -31,7 +34,9 @@ import org.apache.tomcat.jdbc.pool.PoolP
 import org.apache.tomcat.jdbc.pool.PoolUtilities;
 import org.apache.tomcat.jdbc.pool.Validator;
 
-public class ConnectionPool extends NotificationBroadcasterSupport implements 
ConnectionPoolMBean  {
+public class ConnectionPool extends NotificationBroadcasterSupport
+        implements ConnectionPoolMBean, MBeanRegistration {
+
     /**
      * logger
      */
@@ -52,6 +57,11 @@ public class ConnectionPool extends Noti
     protected ConcurrentLinkedQueue<NotificationListener> listeners =
             new ConcurrentLinkedQueue<>();
 
+    /**
+     * the ObjectName of this pool.
+     */
+    private ObjectName oname = null;
+
     public ConnectionPool(org.apache.tomcat.jdbc.pool.ConnectionPool pool) {
         super();
         this.pool = pool;
@@ -65,6 +75,29 @@ public class ConnectionPool extends Noti
         return pool.getPoolProperties();
     }
 
+    public ObjectName getObjectName() {
+        return oname;
+    }
+
+    @Override
+    public ObjectName preRegister(MBeanServer server, ObjectName name)
+            throws Exception {
+        this.oname = name;
+        return name;
+    }
+
+    @Override
+    public void postRegister(Boolean registrationDone) {
+    }
+
+    @Override
+    public void preDeregister() throws Exception {
+    }
+
+    @Override
+    public void postDeregister() {
+    }
+
     //=================================================================
     //       NOTIFICATION INFO
     //=================================================================
@@ -948,9 +981,4 @@ public class ConnectionPool extends Noti
         pool.purgeOnReturn();
 
     }
-
-
-
-
-
 }

Added: 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/JmxUtil.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/JmxUtil.java?rev=1822744&view=auto
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/JmxUtil.java
 (added)
+++ 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/JmxUtil.java
 Wed Jan 31 05:35:13 2018
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.jdbc.pool.jmx;
+
+
+import java.lang.management.ManagementFactory;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
+
+public class JmxUtil {
+    private static final Log log = LogFactory.getLog(JmxUtil.class);
+
+    public static ObjectName registerJmx(ObjectName base, String keyprop, 
Object obj) {
+        ObjectName oname = null;
+        try {
+            oname = getObjectName(base, keyprop);
+            if (oname != null) 
ManagementFactory.getPlatformMBeanServer().registerMBean(obj, oname);
+        } catch (Exception e) {
+            log.error("Jmx registration failed.",e);
+        }
+        return oname;
+    }
+
+    public static void unregisterJmx(ObjectName oname) {
+        if (oname ==null) return;
+        try {
+            ManagementFactory.getPlatformMBeanServer().unregisterMBean(oname);
+        } catch (Exception e) {
+            log.error("Jmx unregistration failed.",e);
+        }
+    }
+
+    private static ObjectName getObjectName(ObjectName base, String keyprop)
+            throws MalformedObjectNameException {
+        if (base == null) return null;
+        StringBuilder OnameStr =  new StringBuilder(base.toString()); 
+        if (keyprop != null) OnameStr.append(keyprop);
+        ObjectName oname = new ObjectName(OnameStr.toString());
+        return oname;
+    }
+}
\ No newline at end of file

Propchange: 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/jmx/JmxUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1822744&r1=1822743&r2=1822744&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Wed Jan 31 05:35:13 2018
@@ -154,6 +154,15 @@
       </fix>
     </changelog>
   </subsection>
+  <subsection name="jdbc-pool">
+    <changelog>
+      <add>
+        Enhance the JMX support for jdbc-pool in order to expose
+        <code>PooledConnection</code> and <code>JdbcInterceptors</code>.
+        (kfujino)
+      </add>
+    </changelog>
+  </subsection>
 </section>
 <section name="Tomcat 9.0.4 (markt)" rtext="2018-01-22">
   <subsection name="Catalina">



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to