Author: fhanik Date: Tue Dec 16 20:00:46 2008 New Revision: 727266 URL: http://svn.apache.org/viewvc?rev=727266&view=rev Log: Refactor JMX name into a constant, add a notification during init
Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReportJmx.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java?rev=727266&r1=727265&r2=727266&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ConnectionPool.java Tue Dec 16 20:00:46 2008 @@ -58,6 +58,8 @@ */ public class ConnectionPool { + public static final String POOL_JMX_TYPE_PREFIX = "org.apache.tomcat.jdbc.pool.jmx:type="; + //logger protected static Log log = LogFactory.getLog(ConnectionPool.class); @@ -346,13 +348,15 @@ properties.setMaxIdle(properties.getMinIdle()); } - + if (this.getPoolProperties().isJmxEnabled()) startJmx(); + PoolProperties.InterceptorDefinition[] proxies = getPoolProperties().getJdbcInterceptorsAsArray(); for (int i=0; i<proxies.length; i++) { try { proxies[i].getInterceptorClass().newInstance().poolStarted(this); }catch (Exception x) { log.warn("Unable to inform interceptor of pool start.",x); + if (jmxPool!=null) jmxPool.notify(jmxPool.NOTIFY_INIT, getStackTrace(x)); close(true); SQLException ex = new SQLException(); ex.initCause(x); @@ -367,6 +371,7 @@ } //for } catch (SQLException x) { + if (jmxPool!=null) jmxPool.notify(jmxPool.NOTIFY_INIT, getStackTrace(x)); close(true); throw x; } finally { @@ -377,7 +382,7 @@ } //end if } //for } //catch - if (this.getPoolProperties().isJmxEnabled()) startJmx(); + closed = false; } @@ -765,7 +770,7 @@ protected void startJmx() { try { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); - ObjectName name = new ObjectName("org.apache.tomcat.jdbc.pool.jmx:type=ConnectionPool,name="+getName()); + ObjectName name = new ObjectName(POOL_JMX_TYPE_PREFIX+"ConnectionPool,name="+getName()); jmxPool = new org.apache.tomcat.jdbc.pool.jmx.ConnectionPool(this); mbs.registerMBean(jmxPool, name); } catch (Exception x) { @@ -776,8 +781,9 @@ protected void stopJmx() { try { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); - ObjectName name = new ObjectName("org.apache.tomcat.jdbc.pool.jmx:type=ConnectionPool,name="+getName()); - mbs.unregisterMBean(name); + ObjectName name = new ObjectName(POOL_JMX_TYPE_PREFIX+"ConnectionPool,name="+getName()); + if (mbs.isRegistered(name)) + mbs.unregisterMBean(name); jmxPool = null; }catch (Exception x) { log.warn("Unable to stop JMX integration for connection pool. Instance["+getName()+"].",x); Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReportJmx.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReportJmx.java?rev=727266&r1=727265&r2=727266&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReportJmx.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/SlowQueryReportJmx.java Tue Dec 16 20:00:46 2008 @@ -202,7 +202,7 @@ Registry registry = Registry.getRegistry(null, null); ManagedBean managed = registry.findManagedBean(this.getClass().getName()); if (managed!=null) { - ObjectName oname = new ObjectName("org.apache.tomcat.jdbc.pool.jmx:type="+getClass().getName()+",name=" + poolName); + ObjectName oname = new ObjectName(ConnectionPool.POOL_JMX_TYPE_PREFIX+getClass().getName()+",name=" + poolName); registry.unregisterComponent(oname); registry.removeManagedBean(managed); } @@ -219,15 +219,15 @@ protected void registerJmx() { try { if (getCompositeType()!=null) { - ObjectName oname = new ObjectName("org.apache.tomcat.jdbc.pool.jmx:type="+getClass().getName()+",name=" + poolName); + ObjectName oname = new ObjectName(ConnectionPool.POOL_JMX_TYPE_PREFIX+getClass().getName()+",name=" + poolName); Registry registry = Registry.getRegistry(null, null); registry.loadDescriptors(getClass().getPackage().getName(),getClass().getClassLoader()); ManagedBean managed = registry.findManagedBean(this.getClass().getName()); DynamicMBean mbean = managed!=null?managed.createMBean(this):null; if (mbean!=null && mbeans.putIfAbsent(poolName, mbean)==null) { registry.getMBeanServer().registerMBean( mbean, oname); - } else { - log.warn(SlowQueryReport.class.getName()+ "- No JMX support, composite type was not found."); + } else if (mbean==null){ + log.warn(SlowQueryReport.class.getName()+ "- No JMX support, unable to initiate Tomcat JMX."); } } else { log.warn(SlowQueryReport.class.getName()+ "- No JMX support, composite type was not found."); Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java?rev=727266&r1=727265&r2=727266&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java Tue Dec 16 20:00:46 2008 @@ -43,6 +43,7 @@ //================================================================= // NOTIFICATION INFO //================================================================= + public static final String NOTIFY_INIT = "INIT FAILED"; public static final String NOTIFY_CONNECT = "CONNECTION FAILED"; public static final String NOTIFY_ABANDON = "CONNECTION ABANDONED"; @@ -54,7 +55,7 @@ } public static MBeanNotificationInfo[] getDefaultNotificationInfo() { - String[] types = new String[] {NOTIFY_CONNECT, NOTIFY_ABANDON}; + String[] types = new String[] {NOTIFY_INIT, NOTIFY_CONNECT, NOTIFY_ABANDON}; String name = Notification.class.getName(); String description = "A connection pool error condition was met."; MBeanNotificationInfo info = new MBeanNotificationInfo(types, name, description); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org