2011-12-21 60 views
2

這是我如何創建DBCP 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 2013-05-24 07:19:36

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);