public DisposableDataSource getDataSource(Class<? extends Driver> driverClass, String url, String username, String password) { final DBPoolDataSource ds = new DBPoolDataSource(); ds.setName("active-objects"); ds.setDriverClassName(driverClass.getName()); ds.setUrl(url); ds.setUsername(username); ds.setPassword(password); ds.setPoolSize(5); ds.setMaxSize(30); ds.setExpiryTime(3600); // Specified in seconds. return DelegatingDisposableDataSourceHandler.newInstance(ds, new Disposable() { public void dispose() { ds.releaseConnectionPool(); } }); }
/** * Attempts to establish a connection with the database. * @return a {@code Connection} instance, or null if unable to connect * @throws java.sql.SQLException if a database access error occurs */ @Override public synchronized Connection getConnection() throws SQLException { if (pool == null) createConnectionPool(); // Get connection from pool. return getLoginTimeout() > 0 ? pool.getConnection(1000L * getLoginTimeout()) : pool.getConnection(); }
DBPoolDataSource ds = new DBPoolDataSource(); if (name != null) for (Enumeration<String> e = name.getAll(); e.hasMoreElements(); ) sb.append(e.nextElement()); ds.setName(sb.toString()); ds.setName(Integer.toString(counter.getAndIncrement())); ds.setDriverClassName(refValue); logger.trace("Set DataSource description: " + refValue); ds.setUser(refValue); logger.trace("Set DataSource username: " + refValue); ds.setPassword(refValue); logger.trace("Set DataSource password"); ds.setDriverClassName(refValue); logger.trace("Set DataSource driver class name: " + refValue); ds.setUrl(refValue); logger.trace("Set DataSource URL: " + refValue); ds.setPasswordDecoderClassName(refValue); logger.trace("Set DataSource PasswordDecoder class name: " + refValue); ds.setValidatorClassName(refValue); logger.trace("Set DataSource ConnectionValidator class name: " + refValue);
@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(); }
driver = (Driver)Class.forName(getDriverClassName()).newInstance(); DriverManager.registerDriver(driver); SQLException sqlx = new SQLException("Unable to register JDBC driver: " + getDriverClassName()); sqlx.initCause(ex); log(sqlx.getMessage(), sqlx); throw sqlx; String poolName = POOL_NAME_PREFIX + getName(); pool = new ConnectionPool(poolName, getMinPool(), getMaxPool(), getMaxSize(), getIdleTimeout(), getUrl(), props); pool.addConnectionPoolListener(this); if (getLogWriter() != null) pool.setLog(getLogWriter()); if (shutdownHook) pool.registerShutdownHook(); log("Unable to instantiate validator class: " + validatorClassName); log("Unable to instantiate password decoder class: " + passwordDecoderClassName);