Setup a DBCP datasource for H2 Database connections

by Wolfram Saringer  (2014-06-02)
last change: 2014-06-02


package whatever;

import org.apache.commons.dbcp.BasicDataSource;
import javax.sql.DataSource;
import java.util.Properties;

public class SetupDataSource {

public static final String DRIVER_CLASS_NAME = "org.h2.Driver";

public static DataSource setup(Properties dbProperties) {
// load driver class -- just to be sure...
try {
Class.forName(DRIVER_CLASS_NAME);
} catch (ClassNotFoundException e) {
Logger.getLogger(AppConfigurator.class).warn(e);
}

// seehttp://commons.apache.org/dbcp/configuration.html
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUsername(dbProperties.getProperty("dbuser"));
//dataSource.setPassword(password);
dataSource.setDriverClassName(DRIVER_CLASS_NAME);
dataSource.setUrl("jdbc:h2:file:" + dbProperties.getProperty("dbfile"));
final int maxConnections = Integer.parseInt(dbProperties.getProperty("maxConnections"));
dataSource.setMaxActive(maxConnections);
dataSource.setMinIdle(1);
if(maxConnections>20)
dataSource.setMaxIdle(20);
dataSource.setMaxWait(20);
// dataSource.setValidationQuery("SELECT 1 FROM dual");
// dataSource.setTestOnBorrow(true);
dataSource.setTimeBetweenEvictionRunsMillis(5 * 60 * 1000);

return dataSource;
}

public static void main(String[] args) {

Properties dbProperties = new Properties();
dbProperties.setProperty("dbuser", "sa");
dbProperties.setProperty("dbfile", "/location/of/your/datafile");
dbProperties.setProperty("maxConnections", "100");

DataSource dataSource = setup(dbProperties);
}
}


all articles represent the sole opinion of their respective author. all content comes without any warranty for correctnes, despite due diligence.