2011-12-21 2 views
2

Это, как я создаю DataSource с ГСБДОМ 1,4 фабрикой соединений:Как настроить DBCP PoolableConnectionFactory?

PoolableConnectionFactory factory = new PoolableConnectionFactory(
    new DriverManagerConnectionFactory("jdbc:h2:mem:db", "", ""), 
    new GenericObjectPool(null), 
    null, 
    "SELECT 1", 
    false, 
    true 
); 
DataSource src = new PoolingDataSource(factory.getPool()); 

работает отлично, но я не знаю, как настроить его с параметрами, перечисленных здесь: http://commons.apache.org/dbcp/configuration.html. Например, мне нужно установить testWhileIdle на true.

ответ

2

BasicDataSource имеет эти атрибуты, можете ли вы использовать его?

BasicDataSource ds = new BasicDataSource(); 
ds.setDriverClassName(JDBCDriver); 
ds.setUrl(JDBCUrl); 
ds.setUsername(JDBCUser); 
ds.setPassword(JDBCPassword); 
ds.setInitialSize(initSize); 
ds.setTestOnBorrow(false); 
ds.setTestWhileIdle(true); 

...

+0

setDriverClassName не похоже на работу. См. Мой вопрос здесь: http://stackoverflow.com/questions/16458786/trouble-specifying-driver-class-in-dbcp Вы, кажется, эксперт по этой проблеме, можете ли вы дать некоторое представление? – RAY

5
Properties props = new Properties(); 
    props.put("validationQuery", "SELECT 1 from dual;"); 
    props.put("testWhileIdle","true"); 

    final ObjectPool connectionPool = new GenericObjectPool(null); 
    final ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectUri, props); 
    new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true); 
    final PoolingDataSource dataSource = new PoolingDataSource(connectionPool); 
Смежные вопросы