Java/Apache Common/Connection Pool
Basic DataSource Example
<source lang="java">
import java.sql.Connection; import org.apache.rumons.dbcp.BasicDataSource; public class BasicDataSourceExample {
public static void main(String args[]) throws Exception { BasicDataSource bds = new BasicDataSource(); bds.setDriverClassName("com.mysql.jdbc.Driver"); bds.setUrl("jdbc:mysql://localhost/commons"); bds.setUsername("root"); bds.setPassword("");
// bds.setInitialSize(5);
Connection connection = bds.getConnection(); System.err.println(connection); connection.close(); }
}
</source>
Connection Pool Basics
<source lang="java">
import java.sql.Connection; import java.util.Properties; import java.sql.PreparedStatement; import org.apache.rumons.dbcp.ConnectionFactory; import org.apache.rumons.dbcp.PoolingDriver; import org.apache.rumons.dbcp.PoolingDataSource; import org.apache.rumons.dbcp.DriverConnectionFactory; import org.apache.rumons.dbcp.PoolableConnectionFactory; import org.apache.rumons.dbcp.DriverManagerConnectionFactory; import org.apache.rumons.pool.impl.GenericObjectPool; import org.apache.rumons.pool.KeyedObjectPoolFactory; import org.apache.rumons.pool.impl.GenericKeyedObjectPoolFactory; public class ConnectionPoolBasics {
public static void main(String args[]) throws Exception { GenericObjectPool gPool = new GenericObjectPool(); /*Class.forName("com.mysql.jdbc.Driver"); DriverManagerConnectionFactory cf = new DriverManagerConnectionFactory( "jdbc:mysql://localhost/commons", "root", "");*/ Properties props = new Properties(); props.setProperty("Username", "root"); props.setProperty("Password", ""); ConnectionFactory cf = new DriverConnectionFactory(new com.mysql.jdbc.Driver(), "jdbc:mysql://localhost/commons", props);
KeyedObjectPoolFactory kopf =new GenericKeyedObjectPoolFactory(null, 8); PoolableConnectionFactory pcf = new PoolableConnectionFactory(cf, gPool, kopf, null, false, true);
for(int i = 0; i < 5; i++) { gPool.addObject(); } // PoolingDataSource pds = new PoolingDataSource(gPool); PoolingDriver pd = new PoolingDriver(); pd.registerPool("example", gPool); for(int i = 0; i < 5; i++) { gPool.addObject(); } Connection conn = java.sql.DriverManager.getConnection("jdbc:apache:commons:dbcp:example"); System.err.println("Connection: " + conn ); //": Delegate: " + ((org.apache.rumons.dbcp.PoolingConnection)conn).getDelegate()); // do some work with the connection PreparedStatement ps = conn.prepareStatement("Select * from customer where id = ?"); System.err.println("Active: " + gPool.getNumActive() + ", Idle: " + gPool.getNumIdle()); conn.close(); System.err.println("Active: " + gPool.getNumActive() + ", Idle: " + gPool.getNumIdle()); }
}
</source>
Database connection pool demo
<source lang="java">
import org.apache.rumons.pool.impl.GenericObjectPool; import org.apache.rumons.dbcp.*; import java.sql.*;
public class DBCPDemo{
public static void main(String args[]) throws Exception{ // create a generic pool GenericObjectPool pool = new GenericObjectPool(null); // use the connection factory which will wraped by // the PoolableConnectionFactory DriverManagerConnectionFactory cf = new DriverManagerConnectionFactory( "jdbc:jtds:sqlserver://myserver:1433/tandem", "user", "pass"); PoolableConnectionFactory pcf = new PoolableConnectionFactory(cf, pool, null, "SELECT * FROM mysql.db", false, true); // register our pool and give it a name new PoolingDriver().registerPool("myPool", pool); // get a connection and test it Connection conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:myPool"); // now we can use this pool the way we want. System.err.println("Are we connected? " + !conn.isClosed()); System.err.println("Idle Connections: " + pool.getNumIdle() + ", out of " + pool.getNumActive()); }
}
</source>