Java tutorial
/** * Copyright (c) 2004-2011 Wang Jinbao(Julian Wong), http://www.ralasafe.com * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php */ package org.ralasafe.db; import java.util.Properties; import org.apache.commons.dbcp.ConnectionFactory; import org.apache.commons.dbcp.DriverManagerConnectionFactory; import org.apache.commons.dbcp.PoolableConnectionFactory; import org.apache.commons.dbcp.PoolingDataSource; import org.apache.commons.pool.ObjectPool; import org.apache.commons.pool.impl.GenericObjectPool; /** * <code>DataSource</code> dbcp's implement. * * @author back * */ public class DataSourceProviderDbcpImpl extends DataSource { private javax.sql.DataSource ds = null; private String name; private Properties prop; public String getName() { return name; } public void setName(String name) { this.name = name; } public void setup(Properties prop) { this.prop = prop; GenericObjectPool.Config conPoolCfg = new GenericObjectPool.Config(); conPoolCfg.maxActive = Integer.parseInt(prop.getProperty("connectionPoolMaxSize", "15")); conPoolCfg.maxIdle = Integer.parseInt(prop.getProperty("connectionPoolMaxIdle", "8")); conPoolCfg.maxWait = Integer.parseInt(prop.getProperty("connectionPoolMaxWait", "60000")); conPoolCfg.minIdle = Integer.parseInt(prop.getProperty("connectionPoolMinSize", "2")); ObjectPool connectionPool = new GenericObjectPool(null, conPoolCfg); try { Class.forName(prop.getProperty("jdbcDriver")); } catch (ClassNotFoundException e) { e.printStackTrace(); throw new RuntimeException(); } ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(prop.getProperty("jdbcUrl"), prop.getProperty("jdbcUser"), prop.getProperty("jdbcPassword")); new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true); PoolingDataSource dataSource = new PoolingDataSource(connectionPool); ds = dataSource; } public javax.sql.DataSource getDataSource() { return ds; } public String getValidInfo(Properties prop) { this.prop = prop; if (prop.containsKey("jdbcUrl") && prop.containsKey("jdbcUser") && prop.containsKey("jdbcPassword") && prop.containsKey("jdbcDriver")) { return null; } return "Required properties: jdbcUrl,jdbcUser,jdbcPassword,jdbcDriver"; } public String toString() { String line = System.getProperty("line.separator"); StringBuffer buff = new StringBuffer(); buff.append("PoweredBy DBCP [ jdbcDriver:").append(prop.getProperty("jdbcDriver")).append(line); buff.append(" \tjdbcUrl:").append(prop.getProperty("jdbcUrl")).append(line); buff.append(" \tjdbcUser:").append(prop.getProperty("jdbcUser")).append("]"); return buff.toString(); } }