List of usage examples for org.apache.commons.dbcp2 BasicDataSource getConnection
@Override public Connection getConnection() throws SQLException
From source file:uk.co.platosys.db.jdbc.ConnectionBroker.java
private void init() { List<DatabaseCredentials> databases = properties.getDatabases(); for (DatabaseCredentials credentials : databases) { String name = ""; String driver = ""; String userName = ""; String password = ""; String url = ""; try {//from w w w . ja va2s . c o m name = credentials.getName(); logger.log("ConnectionBroker initialising database " + name); driver = credentials.getDriver(); url = credentials.getUrl(); userName = credentials.getUsername(); password = credentials.getPassword(); logger.log("ConnectionBroker credentials for " + name + " are " + driver + " " + url + " " + userName + " " + password); } catch (Exception e) { logger.log("ConnectionBroker had a problem getting credentials for " + name, e); } /* try{ //although we only use postgresql, there's no reason we couldn't use a different sql rdbms with a different driver for each //database. Class.forName(driver); }catch(ClassNotFoundException e){ logger.log("ConnectionBroker couldn't load database driver", e); }*/ try { /*connFac = new DriverManagerConnectionFactory(url, userName, password); PoolableConnectionFactory poolableConFac = new PoolableConnectionFactory(connFac, null); GenericObjectPool<PoolableConnection> connectionPool = new GenericObjectPool<PoolableConnection>(poolableConFac); pools.put(name, connectionPool); poolableConFac.setPool(connectionPool); PoolingDataSource<PoolableConnection> dataSource = new PoolingDataSource<PoolableConnection>(connectionPool);*/ BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName(driver); dataSource.setUsername(userName); dataSource.setPassword(password); dataSource.setUrl(url); dataSource.setMinIdle(2); dataSource.setMaxTotal(MAX_ACTIVE); logger.log(5, "ConnectionBroker has made BasicDataSource " + dataSource.toString()); logger.log("Datasource " + name + " has " + dataSource.getMaxTotal() + " maxConnections"); try { Connection connection = dataSource.getConnection(); connection.close(); dataSources.put(name, dataSource); dataSet.add(dataSource); logger.log(5, "ConnectionBroker has initialised database " + name); } catch (PSQLException psqe) { logger.log("could not make a test connection to database: " + name, psqe); } } catch (Exception e) { logger.log("ConnectionBroker had a problem configuring the pool with " + name, e); } } done = true; }
From source file:uk.co.platosys.db.jdbc.ConnectionBroker.java
protected Connection getConnection(String databaseName) throws PlatosysDBException { Connection connect;//w w w . j a v a 2s .c o m while (!done) { } //wait for databases to be set up. try { if (dataSources.containsKey(databaseName)) { BasicDataSource dataSource = dataSources.get(databaseName); /* GenericObjectPool<PoolableConnection> pool = pools.get(databaseName);*/ //logger.log("1 "+databaseName+" has "+dataSource.getNumIdle()+" idle plus "+dataSource.getNumActive()+" borrowed"); Connection connection = dataSource.getConnection(); if (connection != null) { //logger.log("2 "+databaseName+" has "+dataSource.getNumIdle()+" idle plus "+dataSource.getNumActive()+" borrowed"); connect = connection; } else { logger.log("dataSource returned a null connection"); return null; } } else { logger.log("not found first time, reloading datasources"); done = false; init(); while (!done) { } // if (dataSources.containsKey(databaseName)) { BasicDataSource dataSource = dataSources.get(databaseName); /*GenericObjectPool<PoolableConnection> pool = pools.get(databaseName);*/ //logger.log("3 "+databaseName+" has "+dataSource.getNumIdle()+" idle plus "+dataSource.getNumActive()+" borrowed"); Connection connection = dataSource.getConnection(); if (connection != null) { // logger.log("4 "+databaseName+" has "+dataSource.getNumIdle()+" idle plus "+dataSource.getNumActive()+" borrowed"); connect = connection; } else { logger.log("dataSource returned a null connection"); return null; } } else { logger.log(2, "CB - Database " + databaseName + " is not known "); throw new PlatosysDBException("CB says Database " + databaseName + " is not known"); } } //refresh connection counters: int idleConnections = 0; int activeConnections = 0; int totalConnections = 0; int maxTotal = 0; for (BasicDataSource bds : dataSet) { idleConnections = idleConnections + bds.getNumIdle(); activeConnections = activeConnections + bds.getNumActive(); maxTotal = maxTotal + bds.getMaxTotal(); } totalConnections = idleConnections + activeConnections; logger.log("CB has " + totalConnections + "; of which " + activeConnections + " active and " + idleConnections + " idle"); return connect; } catch (Exception e) { throw new PlatosysDBException("ConnectionBroker issues", e); } }