
org.biojava.utils.JDBCPooledDataSource Maven / Gradle / Ivy
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
*/
package org.biojava.utils;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.PoolingDataSource;
import org.apache.commons.pool.ObjectPool;
/**
* Returns a DataSource that implements connection pooling
*
* Uses Jakarta Commons DBCP and Pool packages.
* See the description of the dbcp package at
* http://jakarta.apache.org/commons/dbcp/api/overview-summary.html#overview_description
*
* @author Simon Foote
* @author Len Trigg
* @author Andy Yates
* @author Thomas Down
*/
public class JDBCPooledDataSource {
public static DataSource getDataSource(final String driver,
final String url,
final String user,
final String pass)
throws Exception {
BasicDataSource ds = new BasicDataSource();
ds.setUrl(url);
ds.setDriverClassName(driver);
ds.setUsername(user);
ds.setPassword(pass);
// Set BasicDataSource properties such as maxActive and maxIdle, as described in
// http://jakarta.apache.org/commons/dbcp/api/org/apache/commons/dbcp/BasicDataSource.html
ds.setMaxActive(10);
ds.setMaxIdle(5);
ds.setMaxWait(10000);
return ds;
}
// Adds simple equals and hashcode methods so that we can compare if
// two connections are to the same database. This will fail if the
// DataSource is redirected to another database etc (I doubt this is
// ever likely to be used).
/**
* @depercated This is no longer used in favor of {@link BasicDataSource}
* from DBCP
*/
static class MyPoolingDataSource extends PoolingDataSource {
final String source;
public MyPoolingDataSource(ObjectPool connectionPool, String source) {
super(connectionPool);
this.source = source;
}
public boolean equals(Object o2) {
if ((o2 == null) || !(o2 instanceof MyPoolingDataSource)) {
return false;
}
MyPoolingDataSource b2 = (MyPoolingDataSource) o2;
return source.equals(b2.source);
}
public int hashCode() {
return source.hashCode();
}
}
public static void main(String[] args) {
try {
DataSource ds1 = getDataSource("org.hsqldb.jdbcDriver", "jdbc:hsqldb:/tmp/hsqldb/biosql", "sa", "");
DataSource ds2 = getDataSource("org.hsqldb.jdbcDriver", "jdbc:hsqldb:/tmp/hsqldb/biosql", "sa", "");
System.err.println(ds1);
System.err.println(ds2);
System.err.println(ds1.equals(ds2));
} catch (Exception e) {
e.printStackTrace();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy