2011-11-11 80 views
0

我想這一點:如何使用Apache DBCP 1.4創建數據源?

final PoolableConnectionFactory factory = new PoolableConnectionFactory(
    new DriverManagerConnectionFactory("jdbc:hsqldb:mem:testdb", "sa", ""), 
    new GenericObjectPool(null), 
    null, 
    "SELECT 1 from INFORMATION_SCHEMA.SYSTEM_USERS", 
    true, 
    false, 
    Connection.TRANSACTION_NONE 
); 
DataSource ds = new PoolingDataSource(factory.getPool()); 
ds.getConnection(); 

不得要領,拋出異常:

java.util.NoSuchElementException: Could not create a validated object, cause: Invalid argument in JDBC call 
    at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1191) 
    at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) 

有什麼不對?

回答

1

嘗試設置你的PoolableConnectionFactory這樣

PoolableConnectionFactory factory = new PoolableConnectionFactory(
    new DriverManagerConnectionFactory("jdbc:hsqldb:mem:testdb", "sa", ""), 
    new GenericObjectPool(null), 
    null, null, false, true); 

,並檢查它的工作的方式。然後檢查與事務相關的額外參數是否在DBCP版本中有效。

+0

現在,它的工作原理!這是關於什麼?爲什麼? :) – yegor256

+0

我簡單地看了一下PoolableConnectionFactory類的定義,並沒有找到包含您設置的參數的構造函數。只是猜測標準聲明會起作用。 http://commons.apache.org/dbcp/apidocs/org/apache/commons/dbcp/PoolableConnectionFactory.html – Alfabravo