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/main/java/org/apache/jackrabbit/core/persistence/pool/BundleDbPersistenceManager.java b/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/BundleDbPersistenceManager.java index 86fdc7304aa..33f8bf975fa 100644 --- a/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/BundleDbPersistenceManager.java +++ b/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/BundleDbPersistenceManager.java @@ -566,7 +566,7 @@ public void init(PMContext context) throws Exception { } - private DataSource getDataSource() throws Exception { + protected DataSource getDataSource() throws Exception { if (getDataSourceName() == null || "".equals(getDataSourceName())) { return connectionFactory.getDataSource(getDriver(), getUrl(), getUser(), getPassword()); } else { diff --git a/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/DerbyPersistenceManager.java b/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/DerbyPersistenceManager.java index 8f7f8ad5335..236a16571b7 100644 --- a/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/DerbyPersistenceManager.java +++ b/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/DerbyPersistenceManager.java @@ -17,10 +17,11 @@ package org.apache.jackrabbit.core.persistence.pool; import org.apache.jackrabbit.core.persistence.PMContext; -import org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager; +import org.apache.jackrabbit.core.util.db.ConnectionFactory; import org.apache.jackrabbit.core.util.db.ConnectionHelper; import org.apache.jackrabbit.core.util.db.DerbyConnectionHelper; +import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource; @@ -246,6 +247,12 @@ public void init(PMContext context) throws Exception { if (getSchemaObjectPrefix() == null) { setSchemaObjectPrefix(""); } + try (Connection test = getDataSource().getConnection()) { + if (test.isClosed()) { + //may happen after a workspace shutdown + setConnectionFactory(new ConnectionFactory()); + } + } super.init(context); // set properties if (DERBY_EMBEDDED_DRIVER.equals(getDriver())) { 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..3f061fab683 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,8 +348,8 @@ 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")));