Author: kfujino
Date: Wed Jan 31 06:01:51 2018
New Revision: 1822760

URL: http://svn.apache.org/viewvc?rev=1822760&view=rev
Log:
Add MBean for StatementCache.

Added:
    
tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCacheMBean.java
   (with props)
Modified:
    
tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java
    tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml

Modified: 
tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java?rev=1822760&r1=1822759&r2=1822760&view=diff
==============================================================================
--- 
tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java
 (original)
+++ 
tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCache.java
 Wed Jan 31 06:01:51 2018
@@ -25,17 +25,20 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import javax.management.ObjectName;
+
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.jdbc.pool.ConnectionPool;
 import org.apache.tomcat.jdbc.pool.PoolProperties.InterceptorProperty;
 import org.apache.tomcat.jdbc.pool.PooledConnection;
+import org.apache.tomcat.jdbc.pool.jmx.JmxUtil;
 
 /**
  * Interceptor that caches {@code PreparedStatement} and/or
  * {@code CallableStatement} instances on a connection.
  */
-public class StatementCache extends StatementDecoratorInterceptor {
+public class StatementCache extends StatementDecoratorInterceptor implements 
StatementCacheMBean {
     private static final Log log = LogFactory.getLog(StatementCache.class);
     protected static final String[] ALL_TYPES = new String[] 
{PREPARE_STATEMENT,PREPARE_CALL};
     protected static final String[] CALLABLE_TYPE = new String[] 
{PREPARE_CALL};
@@ -51,15 +54,19 @@ public class StatementCache extends Stat
     private PooledConnection pcon;
     private String[] types;
 
+    private ObjectName oname = null;
 
+    @Override
     public boolean isCachePrepared() {
         return cachePrepared;
     }
 
+    @Override
     public boolean isCacheCallable() {
         return cacheCallable;
     }
 
+    @Override
     public int getMaxCacheSize() {
         return maxCacheSize;
     }
@@ -68,6 +75,7 @@ public class StatementCache extends Stat
         return types;
     }
 
+    @Override
     public AtomicInteger getCacheSize() {
         return cacheSize;
     }
@@ -120,6 +128,10 @@ public class StatementCache extends Stat
         if (parent==null) {
             cacheSize = null;
             this.pcon = null;
+            if (oname != null) {
+                JmxUtil.unregisterJmx(oname);
+                oname = null;
+            }
         } else {
             cacheSize = cacheSizeMap.get(parent);
             this.pcon = con;
@@ -128,6 +140,10 @@ public class StatementCache extends Stat
                         new ConcurrentHashMap<>();
                 pcon.getAttributes().put(STATEMENT_CACHE_ATTR,cache);
             }
+            if (oname == null) {
+                String keyprop = ",JdbcInterceptor=" + 
getClass().getSimpleName();
+                oname = JmxUtil.registerJmx(pcon.getObjectName(), keyprop, 
this);
+            }
         }
     }
 

Added: 
tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCacheMBean.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCacheMBean.java?rev=1822760&view=auto
==============================================================================
--- 
tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCacheMBean.java
 (added)
+++ 
tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCacheMBean.java
 Wed Jan 31 06:01:51 2018
@@ -0,0 +1,10 @@
+package org.apache.tomcat.jdbc.pool.interceptor;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+public interface StatementCacheMBean {
+    public boolean isCachePrepared();
+    public boolean isCacheCallable();
+    public int getMaxCacheSize();
+    public AtomicInteger getCacheSize();
+}

Propchange: 
tomcat/tc8.5.x/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/StatementCacheMBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml?rev=1822760&r1=1822759&r2=1822760&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml Wed Jan 31 06:01:51 2018
@@ -103,6 +103,9 @@
       <add>
         Add MBean for <code>PooledConnection</code>. (kfujino)
       </add>
+      <add>
+        Add MBean for <code>StatementCache</code>. (kfujino)
+      </add>
     </changelog>
   </subsection>
 </section>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to