diff --git a/jackrabbit-core/pom.xml b/jackrabbit-core/pom.xml
index 38e66998930..0d514a9ef87 100644
--- a/jackrabbit-core/pom.xml
+++ b/jackrabbit-core/pom.xml
@@ -233,9 +233,9 @@ org.apache.jackrabbit.core.version.RemoveAndAddVersionLabelXATest#testVersionLab
commons-io
- commons-dbcp
- commons-dbcp
- 1.4
+ org.apache.commons
+ commons-dbcp2
+ 2.14.0
javax.jcr
diff --git a/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/util/db/ConnectionFactoryTest.java b/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/util/db/ConnectionFactoryTest.java
index 46fbf6bcff8..e65c41f722a 100644
--- a/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/util/db/ConnectionFactoryTest.java
+++ b/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/util/db/ConnectionFactoryTest.java
@@ -24,7 +24,7 @@
import junit.framework.TestCase;
-import org.apache.commons.dbcp.BasicDataSource;
+import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.derby.iapi.jdbc.EngineConnection;
import org.apache.jackrabbit.core.config.ConfigurationException;
import org.apache.jackrabbit.core.config.DataSourceConfig;
@@ -146,7 +146,7 @@ public void testClose() throws Exception {
}
private void assertPoolDefaults(BasicDataSource ds, String validationQuery, int maxCons) {
- assertEquals(maxCons, ds.getMaxActive());
+ assertEquals(maxCons, ds.getMaxTotal());
assertEquals(validationQuery, ds.getValidationQuery());
assertTrue(ds.getDefaultAutoCommit());
assertFalse(ds.getTestOnBorrow());
diff --git a/jackrabbit-data/pom.xml b/jackrabbit-data/pom.xml
index b669e82d280..ba9e5bd7d31 100644
--- a/jackrabbit-data/pom.xml
+++ b/jackrabbit-data/pom.xml
@@ -86,9 +86,9 @@
commons-io
- commons-dbcp
- commons-dbcp
- 1.4
+ org.apache.commons
+ commons-dbcp2
+ 2.14.0
true
diff --git a/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionFactory.java b/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionFactory.java
index 65f63eb5694..2d1b17d7732 100644
--- a/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionFactory.java
+++ b/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/util/db/ConnectionFactory.java
@@ -30,9 +30,9 @@
import javax.naming.NamingException;
import javax.sql.DataSource;
-import org.apache.commons.dbcp.BasicDataSource;
-import org.apache.commons.dbcp.DelegatingConnection;
-import org.apache.commons.pool.impl.GenericObjectPool;
+import org.apache.commons.dbcp2.BasicDataSource;
+import org.apache.commons.dbcp2.DelegatingConnection;
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.apache.jackrabbit.core.config.DataSourceConfig;
import org.apache.jackrabbit.core.config.DataSourceConfig.DataSourceDefinition;
import org.apache.jackrabbit.util.Base64;
@@ -102,7 +102,7 @@ public void registerDataSources(DataSourceConfig dsc) throws RepositoryException
BasicDataSource bds =
getDriverDataSource(driverClass, def.getUrl(), def.getUser(), def.getPassword());
if (def.getMaxPoolSize() > 0) {
- bds.setMaxActive(def.getMaxPoolSize());
+ bds.setMaxTotal(def.getMaxPoolSize());
}
if (def.getValidationQuery() != null && !"".equals(def.getValidationQuery().trim())) {
bds.setValidationQuery(def.getValidationQuery());
@@ -348,12 +348,14 @@ private BasicDataSource getDriverDataSource(
ds.setTestWhileIdle(true);
ds.setTimeBetweenEvictionRunsMillis(600000); // 10 Minutes
ds.setMinEvictableIdleTimeMillis(60000); // 1 Minute
- ds.setMaxActive(-1); // unlimited
- ds.setMaxIdle(GenericObjectPool.DEFAULT_MAX_IDLE + 10);
+ ds.setMaxTotal(-1); // unlimited
+ ds.setMaxIdle(GenericObjectPoolConfig.DEFAULT_MAX_IDLE + 10);
ds.setValidationQuery(guessValidationQuery(url));
ds.setAccessToUnderlyingConnectionAllowed(true);
ds.setPoolPreparedStatements(Boolean.valueOf(System.getProperty(SYSTEM_PROPERTY_POOL_PREPARED_STATEMENTS, "true")));
ds.setMaxOpenPreparedStatements(-1); // unlimited
+ // this helps to discover unusable connections of a shut-down database without executing a validation query
+ ds.setCacheState(false);
return ds;
}