Found while debugging version 7.0.29 I found that our SlowQueryReportJmx mbean was not being deregistered during webapp shutdown. I tracked this down to a NPE. The interceptor properties are not being set (as is done in setupConnection) prior to the pool close callback. ConnectionPool.close(boolean) poolClosed callback produces NPE in SlowQueryReportJmx. {code} PoolProperties.InterceptorDefinition[] proxies = getPoolProperties().getJdbcInterceptorsAsArray(); for (int i=0; i<proxies.length; i++) { try { proxies[i].getInterceptorClass().newInstance().poolClosed(this); }catch (Exception x) { log.debug("Unable to inform interceptor of pool closure.",x); } } ... {code} NPE in SlowQueryReportJmx - null.containsKey {code} public ObjectName getObjectName(Class<?> clazz, String poolName) throws MalformedObjectNameException { ... NPE if (getProperties().containsKey(objectNameAttribute)) { ... {code} Sounds reasonable to set properties any time you need to instantiate interceptors. As is done in ConnectionPool.init(PoolConfiguration) {code} JdbcInterceptor interceptor = proxies[i].getInterceptorClass().newInstance(); interceptor.setProperties(proxies[i].getProperties()); interceptor.poolStarted(this); {code}
Thanks for the report. Fixed in trunk and 7.0.x and will be included in 7.0.34 onwards.