@Override public void contextDestroyed(ServletContextEvent evt) { // Find configured parameter. String name = evt.getServletContext().getInitParameter("name"); if (name == null || name.trim().isEmpty()) log.warn("Found invalid 'name' parameter in ServletContext"); try { // Find DataSource in JNDI context. InitialContext ctx = new InitialContext(); Object o = ctx.lookup("java:comp/env/" + name); if (o == null || !(o instanceof DataSource)) { log.warn("ServletContext 'name' parameter doesn't refer to a DataSource: " + o); return; } DBPoolDataSource ds = (DBPoolDataSource)o; log.trace(String.format("Found compatible DBPoolDataSource (%s): releasing", ds.getName())); ds.release(); } catch (Throwable t) { log.warn(t.getMessage(), t); } } }
@Override public synchronized String toString() { StringBuilder sb = new StringBuilder(); sb.append(getClass().getName()); sb.append('['); sb.append("name="); sb.append(getName()); sb.append(",driverClassName="); sb.append(getDriverClassName()); sb.append(",url="); sb.append(getUrl()); sb.append(",user="); sb.append(getUser()); sb.append(",loginTimeout="); sb.append(getLoginTimeout()); sb.append(",minPool="); sb.append(getMinPool()); sb.append(",maxPool="); sb.append(getMaxPool()); sb.append(",maxSize="); sb.append(getMaxSize()); sb.append(",idleTimeout="); sb.append(getIdleTimeout()); sb.append("s"); return sb.toString(); }
String poolName = POOL_NAME_PREFIX + getName();