Author: fhanik
Date: Tue Jun 26 19:08:27 2012
New Revision: 1354173

URL: http://svn.apache.org/viewvc?rev=1354173&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=53445
by allowing
 a) override the getObjectName method of the SlowQueryReportJmx class
 b) specify the objectName=xxx attribute in the configuration


Modified:
    tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml
    
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
    
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSource.java
    
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReportJmx.java
    
tomcat/trunk/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/test/TestSlowQueryReport.java

Modified: tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml?rev=1354173&r1=1354172&r2=1354173&view=diff
==============================================================================
--- tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml (original)
+++ tomcat/trunk/modules/jdbc-pool/doc/jdbc-pool.xml Tue Jun 26 19:08:27 2012
@@ -617,6 +617,12 @@
            The default value is <code>true</code>.
         </p>
       </attribute>
+      <attribute name="objectName" required="false">
+        <p>(String) Define a valid <code>javax.management.ObjectName</code> 
string that will be used to register this object with the platform mbean server
+           The default value is <code>null</code> and the object will be 
registered using 
+           
tomcat.jdbc:type=org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx,name=the-name-of-the-pool
+        </p>
+      </attribute>
     </attributes>
   </subsection>
   <subsection 
name="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer">

Modified: 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=1354173&r1=1354172&r2=1354173&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java
 Tue Jun 26 19:08:27 2012
@@ -54,10 +54,15 @@ import org.apache.juli.logging.LogFactor
  */
 
 public class ConnectionPool {
+
+    /**
+     * Default domain for objects registering with an mbean server
+     */
+    public static final String POOL_JMX_DOMAIN = "tomcat.jdbc";
     /**
      * Prefix type for JMX registration
      */
-    public static final String POOL_JMX_TYPE_PREFIX = "tomcat.jdbc:type=";
+    public static final String POOL_JMX_TYPE_PREFIX = POOL_JMX_DOMAIN+":type=";
 
     /**
      * Logger

Modified: 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSource.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSource.java?rev=1354173&r1=1354172&r2=1354173&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSource.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSource.java
 Tue Jun 26 19:08:27 2012
@@ -113,7 +113,7 @@ public class DataSource extends DataSour
      * @throws MalformedObjectNameException
      */
     public ObjectName createObjectName(ObjectName original) throws 
MalformedObjectNameException {
-        String domain = "tomcat.jdbc";
+        String domain = ConnectionPool.POOL_JMX_DOMAIN;
         Hashtable<String,String> properties = original.getKeyPropertyList();
         String origDomain = original.getDomain();
         properties.put("type", "ConnectionPool");

Modified: 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReportJmx.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReportJmx.java?rev=1354173&r1=1354172&r2=1354173&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReportJmx.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReportJmx.java
 Tue Jun 26 19:08:27 2012
@@ -58,6 +58,8 @@ public class SlowQueryReportJmx extends 
     public static final String SLOW_QUERY_NOTIFICATION = "SLOW QUERY";
     public static final String FAILED_QUERY_NOTIFICATION = "FAILED QUERY";
 
+    public static final String objectNameAttribute = "objectName";
+
     protected static CompositeType SLOW_QUERY_TYPE;
 
     private static final Log log = LogFactory.getLog(SlowQueryReportJmx.class);
@@ -267,8 +269,13 @@ public class SlowQueryReportJmx extends 
     }
 
 
-    public static ObjectName getObjectName(Class<?> clazz, String poolName) 
throws MalformedObjectNameException {
-        ObjectName oname = new 
ObjectName(ConnectionPool.POOL_JMX_TYPE_PREFIX+clazz.getName()+",name=" + 
poolName);
+    public ObjectName getObjectName(Class<?> clazz, String poolName) throws 
MalformedObjectNameException {
+        ObjectName oname = null;
+        if (getProperties().containsKey(objectNameAttribute)) {
+            oname = new 
ObjectName(getProperties().get(objectNameAttribute).getValue());
+        } else {
+            oname = new 
ObjectName(ConnectionPool.POOL_JMX_TYPE_PREFIX+clazz.getName()+",name=" + 
poolName);
+        }
         return oname;
     }
 

Modified: 
tomcat/trunk/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/test/TestSlowQueryReport.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/test/TestSlowQueryReport.java?rev=1354173&r1=1354172&r2=1354173&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/test/TestSlowQueryReport.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/test/TestSlowQueryReport.java
 Tue Jun 26 19:08:27 2012
@@ -102,7 +102,7 @@ public class TestSlowQueryReport extends
         ClientListener listener = new ClientListener();
         ConnectionPool pool = datasource.getPool();
         ManagementFactory.getPlatformMBeanServer().addNotificationListener(
-                SlowQueryReportJmx.getObjectName(SlowQueryReportJmx.class, 
pool.getName()),
+                new 
SlowQueryReportJmx().getObjectName(SlowQueryReportJmx.class, pool.getName()),
                 listener,
                 null,
                 null);



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

Reply via email to