You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2018/11/14 02:54:31 UTC
commons-dbcp git commit: Javadoc.
Repository: commons-dbcp
Updated Branches:
refs/heads/master b729bd943 -> fbf2ef517
Javadoc.
Project: http://git-wip-us.apache.org/repos/asf/commons-dbcp/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-dbcp/commit/fbf2ef51
Tree: http://git-wip-us.apache.org/repos/asf/commons-dbcp/tree/fbf2ef51
Diff: http://git-wip-us.apache.org/repos/asf/commons-dbcp/diff/fbf2ef51
Branch: refs/heads/master
Commit: fbf2ef51728b2cb8459b1edab75b023ac67f8d8c
Parents: b729bd9
Author: Gary Gregory <ga...@gmail.com>
Authored: Tue Nov 13 19:54:28 2018 -0700
Committer: Gary Gregory <ga...@gmail.com>
Committed: Tue Nov 13 19:54:28 2018 -0700
----------------------------------------------------------------------
.../apache/commons/dbcp2/BasicDataSource.java | 2 +-
.../dbcp2/DataSourceConnectionFactory.java | 3 +
.../commons/dbcp2/DriverConnectionFactory.java | 3 +
.../dbcp2/DriverManagerConnectionFactory.java | 3 +
.../commons/dbcp2/PoolableConnection.java | 9 +-
.../dbcp2/PoolableConnectionFactory.java | 674 ++++++++++---------
.../dbcp2/managed/LocalXAConnectionFactory.java | 1 +
.../dbcp2/managed/ManagedConnection.java | 2 +
.../managed/PoolableManagedConnection.java | 1 +
.../PoolableManagedConnectionFactory.java | 1 +
10 files changed, 374 insertions(+), 325 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/fbf2ef51/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
index a944da3..9bda48d 100644
--- a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
+++ b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
@@ -1963,7 +1963,7 @@ public class BasicDataSource implements DataSource, BasicDataSourceMXBean, MBean
*
* @param autoCommitOnReturn
* Whether or not connections being returned to the pool will be checked and configured with auto-commit.
- * @deprecated Use {@linkn #setAutoCommitOnReturn(boolean)}.
+ * @deprecated Use {@link #setAutoCommitOnReturn(boolean)}.
*/
@Deprecated
public void setEnableAutoCommitOnReturn(final boolean autoCommitOnReturn) {
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/fbf2ef51/src/main/java/org/apache/commons/dbcp2/DataSourceConnectionFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/DataSourceConnectionFactory.java b/src/main/java/org/apache/commons/dbcp2/DataSourceConnectionFactory.java
index 19a0c18..f18151d 100644
--- a/src/main/java/org/apache/commons/dbcp2/DataSourceConnectionFactory.java
+++ b/src/main/java/org/apache/commons/dbcp2/DataSourceConnectionFactory.java
@@ -86,6 +86,7 @@ public class DataSourceConnectionFactory implements ConnectionFactory {
}
/**
+ * @return The data source.
* @since 2.6.0
*/
public DataSource getDataSource() {
@@ -93,6 +94,7 @@ public class DataSourceConnectionFactory implements ConnectionFactory {
}
/**
+ * @return The user name.
* @since 2.6.0
*/
public String getUserName() {
@@ -100,6 +102,7 @@ public class DataSourceConnectionFactory implements ConnectionFactory {
}
/**
+ * @return The user password.
* @since 2.6.0
*/
public char[] getUserPassword() {
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/fbf2ef51/src/main/java/org/apache/commons/dbcp2/DriverConnectionFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/DriverConnectionFactory.java b/src/main/java/org/apache/commons/dbcp2/DriverConnectionFactory.java
index ba88b76..1b4f5dd 100644
--- a/src/main/java/org/apache/commons/dbcp2/DriverConnectionFactory.java
+++ b/src/main/java/org/apache/commons/dbcp2/DriverConnectionFactory.java
@@ -54,6 +54,7 @@ public class DriverConnectionFactory implements ConnectionFactory {
}
/**
+ * @return The connection String.
* @since 2.6.0
*/
public String getConnectionString() {
@@ -61,6 +62,7 @@ public class DriverConnectionFactory implements ConnectionFactory {
}
/**
+ * @return The Driver.
* @since 2.6.0
*/
public Driver getDriver() {
@@ -68,6 +70,7 @@ public class DriverConnectionFactory implements ConnectionFactory {
}
/**
+ * @return The Properties.
* @since 2.6.0
*/
public Properties getProperties() {
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/fbf2ef51/src/main/java/org/apache/commons/dbcp2/DriverManagerConnectionFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/DriverManagerConnectionFactory.java b/src/main/java/org/apache/commons/dbcp2/DriverManagerConnectionFactory.java
index eeb1373..c409e73 100644
--- a/src/main/java/org/apache/commons/dbcp2/DriverManagerConnectionFactory.java
+++ b/src/main/java/org/apache/commons/dbcp2/DriverManagerConnectionFactory.java
@@ -124,6 +124,7 @@ public class DriverManagerConnectionFactory implements ConnectionFactory {
}
/**
+ * @return The connection URI.
* @since 2.6.0
*/
public String getConnectionUri() {
@@ -131,6 +132,7 @@ public class DriverManagerConnectionFactory implements ConnectionFactory {
}
/**
+ * @return The Properties.
* @since 2.6.0
*/
public Properties getProperties() {
@@ -138,6 +140,7 @@ public class DriverManagerConnectionFactory implements ConnectionFactory {
}
/**
+ * @return The user name.
* @since 2.6.0
*/
public String getUserName() {
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/fbf2ef51/src/main/java/org/apache/commons/dbcp2/PoolableConnection.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/PoolableConnection.java b/src/main/java/org/apache/commons/dbcp2/PoolableConnection.java
index e9924ae..6a6ccf4 100644
--- a/src/main/java/org/apache/commons/dbcp2/PoolableConnection.java
+++ b/src/main/java/org/apache/commons/dbcp2/PoolableConnection.java
@@ -331,13 +331,7 @@ public class PoolableConnection extends DelegatingConnection<Connection> impleme
}
/**
- * @since 2.6.0
- */
- public ObjectNameWrapper getJmxObjectName() {
- return jmxObjectName;
- }
-
- /**
+ * @return The disconnection SQL codes.
* @since 2.6.0
*/
public Collection<String> getDisconnectionSqlCodes() {
@@ -345,6 +339,7 @@ public class PoolableConnection extends DelegatingConnection<Connection> impleme
}
/**
+ * @return Whether to fail-fast.
* @since 2.6.0
*/
public boolean isFastFailValidation() {
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/fbf2ef51/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java b/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java
index 604c049..cc91ec4 100644
--- a/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java
+++ b/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java
@@ -46,6 +46,53 @@ public class PoolableConnectionFactory implements PooledObjectFactory<PoolableCo
private static final Log log = LogFactory.getLog(PoolableConnectionFactory.class);
/**
+ * Internal constant to indicate the level is not set.
+ */
+ static final int UNKNOWN_TRANSACTION_ISOLATION = -1;
+
+ private final ConnectionFactory connectionFactory;
+
+ private final ObjectName dataSourceJmxObjectName;
+
+ private volatile String validationQuery;
+
+ private volatile int validationQueryTimeoutSeconds = -1;
+
+ private Collection<String> connectionInitSqls;
+
+ private Collection<String> disconnectionSqlCodes;
+
+ private boolean fastFailValidation = true;
+
+ private volatile ObjectPool<PoolableConnection> pool;
+
+ private Boolean defaultReadOnly;
+
+ private Boolean defaultAutoCommit;
+
+ private boolean autoCommitOnReturn = true;
+
+ private boolean rollbackOnReturn = true;
+
+ private int defaultTransactionIsolation = UNKNOWN_TRANSACTION_ISOLATION;
+
+ private String defaultCatalog;
+
+ private String defaultSchema;
+
+ private boolean cacheState;
+
+ private boolean poolStatements;
+
+ private int maxOpenPreparedStatements = GenericKeyedObjectPoolConfig.DEFAULT_MAX_TOTAL_PER_KEY;
+
+ private long maxConnLifetimeMillis = -1;
+
+ private final AtomicLong connectionIndex = new AtomicLong(0);
+
+ private Integer defaultQueryTimeoutSeconds;
+
+ /**
* Creates a new {@code PoolableConnectionFactory}.
*
* @param connFactory
@@ -58,198 +105,135 @@ public class PoolableConnectionFactory implements PooledObjectFactory<PoolableCo
this.dataSourceJmxObjectName = dataSourceJmxObjectName;
}
- /**
- * Sets the query I use to {@link #validateObject validate} {@link Connection}s. Should return at least one row. If
- * not specified, {@link Connection#isValid(int)} will be used to validate connections.
- *
- * @param validationQuery
- * a query to use to {@link #validateObject validate} {@link Connection}s.
- */
- public void setValidationQuery(final String validationQuery) {
- this.validationQuery = validationQuery;
- }
+ @Override
+ public void activateObject(final PooledObject<PoolableConnection> p) throws Exception {
- /**
- * Sets the validation query timeout, the amount of time, in seconds, that connection validation will wait for a
- * response from the database when executing a validation query. Use a value less than or equal to 0 for no timeout.
- *
- * @param validationQueryTimeoutSeconds
- * new validation query timeout value in seconds
- */
- public void setValidationQueryTimeout(final int validationQueryTimeoutSeconds) {
- this.validationQueryTimeoutSeconds = validationQueryTimeoutSeconds;
+ validateLifetime(p);
+
+ final PoolableConnection conn = p.getObject();
+ conn.activate();
+
+ if (defaultAutoCommit != null && conn.getAutoCommit() != defaultAutoCommit.booleanValue()) {
+ conn.setAutoCommit(defaultAutoCommit.booleanValue());
+ }
+ if (defaultTransactionIsolation != UNKNOWN_TRANSACTION_ISOLATION
+ && conn.getTransactionIsolation() != defaultTransactionIsolation) {
+ conn.setTransactionIsolation(defaultTransactionIsolation);
+ }
+ if (defaultReadOnly != null && conn.isReadOnly() != defaultReadOnly.booleanValue()) {
+ conn.setReadOnly(defaultReadOnly.booleanValue());
+ }
+ if (defaultCatalog != null && !defaultCatalog.equals(conn.getCatalog())) {
+ conn.setCatalog(defaultCatalog);
+ }
+ if (defaultSchema != null && !defaultSchema.equals(Jdbc41Bridge.getSchema(conn))) {
+ Jdbc41Bridge.setSchema(conn, defaultSchema);
+ }
+ conn.setDefaultQueryTimeout(defaultQueryTimeoutSeconds);
}
- /**
- * Sets the SQL statements I use to initialize newly created {@link Connection}s. Using {@code null} turns off
- * connection initialization.
- *
- * @param connectionInitSqls
- * SQL statement to initialize {@link Connection}s.
- */
- public void setConnectionInitSql(final Collection<String> connectionInitSqls) {
- this.connectionInitSqls = connectionInitSqls;
+ @Override
+ public void destroyObject(final PooledObject<PoolableConnection> p) throws Exception {
+ p.getObject().reallyClose();
}
/**
- * Sets the {@link ObjectPool} in which to pool {@link Connection}s.
- *
- * @param pool
- * the {@link ObjectPool} in which to pool those {@link Connection}s
+ * @return The cache state.
+ * @since Made public in 2.6.0.
*/
- public synchronized void setPool(final ObjectPool<PoolableConnection> pool) {
- if (null != this.pool && pool != this.pool) {
- try {
- this.pool.close();
- } catch (final Exception e) {
- // ignored !?!
- }
- }
- this.pool = pool;
+ public boolean getCacheState() {
+ return cacheState;
}
/**
- * Returns the {@link ObjectPool} in which {@link Connection}s are pooled.
- *
- * @return the connection pool
+ * @return The connection factory.
+ * @since Made public in 2.6.0.
*/
- public synchronized ObjectPool<PoolableConnection> getPool() {
- return pool;
+ public ConnectionFactory getConnectionFactory() {
+ return connectionFactory;
}
- /**
- * Sets the default "read only" setting for borrowed {@link Connection}s
- *
- * @param defaultReadOnly
- * the default "read only" setting for borrowed {@link Connection}s
- */
- public void setDefaultReadOnly(final Boolean defaultReadOnly) {
- this.defaultReadOnly = defaultReadOnly;
+ protected AtomicLong getConnectionIndex() {
+ return connectionIndex;
}
/**
- * Sets the default "auto commit" setting for borrowed {@link Connection}s
- *
- * @param defaultAutoCommit
- * the default "auto commit" setting for borrowed {@link Connection}s
+ * @return The collection of initialization SQL statements.
+ * @since 2.6.0
*/
- public void setDefaultAutoCommit(final Boolean defaultAutoCommit) {
- this.defaultAutoCommit = defaultAutoCommit;
+ public Collection<String> getConnectionInitSqls() {
+ return connectionInitSqls;
}
/**
- * Sets the default "Transaction Isolation" setting for borrowed {@link Connection}s
- *
- * @param defaultTransactionIsolation
- * the default "Transaction Isolation" setting for returned {@link Connection}s
+ * @return The data source JMX ObjectName
+ * @since Made public in 2.6.0.
*/
- public void setDefaultTransactionIsolation(final int defaultTransactionIsolation) {
- this.defaultTransactionIsolation = defaultTransactionIsolation;
+ public ObjectName getDataSourceJmxName() {
+ return dataSourceJmxObjectName;
}
/**
- * Sets the default "catalog" setting for borrowed {@link Connection}s
- *
- * @param defaultCatalog
- * the default "catalog" setting for borrowed {@link Connection}s
+ * @return The data source JMS ObjectName.
+ * @since 2.6.0
*/
- public void setDefaultCatalog(final String defaultCatalog) {
- this.defaultCatalog = defaultCatalog;
+ public ObjectName getDataSourceJmxObjectName() {
+ return dataSourceJmxObjectName;
}
/**
- * Sets the default "schema" setting for borrowed {@link Connection}s
- *
- * @param defaultSchema
- * the default "schema" setting for borrowed {@link Connection}s
- * @since 2.5.0
+ * @return Default auto-commit value.
+ * @since 2.6.0
*/
- public void setDefaultSchema(final String defaultSchema) {
- this.defaultSchema = defaultSchema;
- }
-
- public void setCacheState(final boolean cacheState) {
- this.cacheState = cacheState;
- }
-
- public void setPoolStatements(final boolean poolStatements) {
- this.poolStatements = poolStatements;
+ public Boolean getDefaultAutoCommit() {
+ return defaultAutoCommit;
}
/**
- * Deprecated due to typo in method name.
- *
- * @param maxOpenPreparedStatements
- * The maximum number of open prepared statements.
- * @deprecated Use {@link #setMaxOpenPreparedStatements(int)}.
+ * @return Default catalog.
+ * @since 2.6.0
*/
- @Deprecated // Due to typo in method name.
- public void setMaxOpenPrepatedStatements(final int maxOpenPreparedStatements) {
- setMaxOpenPreparedStatements(maxOpenPreparedStatements);
+ public String getDefaultCatalog() {
+ return defaultCatalog;
}
/**
- * Sets the maximum number of open prepared statements.
- *
- * @param maxOpenPreparedStatements
- * The maximum number of open prepared statements.
+ * @return Default query timeout in seconds.
*/
- public void setMaxOpenPreparedStatements(final int maxOpenPreparedStatements) {
- this.maxOpenPreparedStatements = maxOpenPreparedStatements;
+ public Integer getDefaultQueryTimeout() {
+ return defaultQueryTimeoutSeconds;
}
/**
- * Sets the maximum lifetime in milliseconds of a connection after which the connection will always fail activation,
- * passivation and validation. A value of zero or less indicates an infinite lifetime. The default value is -1.
- *
- * @param maxConnLifetimeMillis
- * The maximum lifetime in milliseconds.
+ * @return Default query timeout in seconds.
+ * @since 2.6.0
*/
- public void setMaxConnLifetimeMillis(final long maxConnLifetimeMillis) {
- this.maxConnLifetimeMillis = maxConnLifetimeMillis;
+ public Integer getDefaultQueryTimeoutSeconds() {
+ return defaultQueryTimeoutSeconds;
}
/**
- * @deprecated Use {@link #isAutoCommitOnReturn()}.
+ * @return Default read-only-value.
+ * @since 2.6.0
*/
- @Deprecated
- public boolean isEnableAutoCommitOnReturn() {
- return autoCommitOnReturn;
+ public Boolean getDefaultReadOnly() {
+ return defaultReadOnly;
}
/**
+ * @return Default schema.
* @since 2.6.0
*/
- public boolean isAutoCommitOnReturn() {
- return autoCommitOnReturn;
- }
-
- public void setAutoCommitOnReturn(final boolean autoCommitOnReturn) {
- this.autoCommitOnReturn = autoCommitOnReturn;
+ public String getDefaultSchema() {
+ return defaultSchema;
}
/**
- * @deprecated Use {@link setAutoCommitOnReturn(boolean)}.
+ * @return Default transaction isolation.
+ * @since 2.6.0
*/
- @Deprecated
- public void setEnableAutoCommitOnReturn(final boolean autoCommitOnReturn) {
- this.autoCommitOnReturn = autoCommitOnReturn;
- }
-
- public boolean isRollbackOnReturn() {
- return rollbackOnReturn;
- }
-
- public void setRollbackOnReturn(final boolean rollbackOnReturn) {
- this.rollbackOnReturn = rollbackOnReturn;
- }
-
- public Integer getDefaultQueryTimeout() {
- return defaultQueryTimeoutSeconds;
- }
-
- public void setDefaultQueryTimeout(final Integer defaultQueryTimeoutSeconds) {
- this.defaultQueryTimeoutSeconds = defaultQueryTimeoutSeconds;
+ public int getDefaultTransactionIsolation() {
+ return defaultTransactionIsolation;
}
/**
@@ -273,15 +257,79 @@ public class PoolableConnectionFactory implements PooledObjectFactory<PoolableCo
}
/**
- * @param disconnectionSqlCodes
- * The disconnection SQL codes.
- * @see #getDisconnectionSqlCodes()
- * @since 2.1
+ * @return Maximum connection lifetime in milliseconds.
+ * @since 2.6.0
*/
- public void setDisconnectionSqlCodes(final Collection<String> disconnectionSqlCodes) {
- this.disconnectionSqlCodes = disconnectionSqlCodes;
+ public long getMaxConnLifetimeMillis() {
+ return maxConnLifetimeMillis;
}
+ protected int getMaxOpenPreparedStatements() {
+ return maxOpenPreparedStatements;
+ }
+
+ /**
+ * Returns the {@link ObjectPool} in which {@link Connection}s are pooled.
+ *
+ * @return the connection pool
+ */
+ public synchronized ObjectPool<PoolableConnection> getPool() {
+ return pool;
+ }
+
+ /**
+ * @return Whether to pool statements.
+ * @since Made public in 2.6.0.
+ */
+ public boolean getPoolStatements() {
+ return poolStatements;
+ }
+ /**
+ * @return Validation query.
+ * @since 2.6.0
+ */
+ public String getValidationQuery() {
+ return validationQuery;
+ }
+ /**
+ * @return Validation query timeout in seconds.
+ * @since 2.6.0
+ */
+ public int getValidationQueryTimeoutSeconds() {
+ return validationQueryTimeoutSeconds;
+ }
+ protected void initializeConnection(final Connection conn) throws SQLException {
+ final Collection<String> sqls = connectionInitSqls;
+ if (conn.isClosed()) {
+ throw new SQLException("initializeConnection: connection closed");
+ }
+ if (null != sqls) {
+ try (Statement stmt = conn.createStatement()) {
+ for (final String sql : sqls) {
+ Objects.requireNonNull(sql, "null connectionInitSqls element");
+ stmt.execute(sql);
+ }
+ }
+ }
+ }
+
+ /**
+ * @return Whether to auto-commit on return.
+ * @since 2.6.0
+ */
+ public boolean isAutoCommitOnReturn() {
+ return autoCommitOnReturn;
+ }
+
+ /**
+ * @return Whether to auto-commit on return.
+ * @deprecated Use {@link #isAutoCommitOnReturn()}.
+ */
+ @Deprecated
+ public boolean isEnableAutoCommitOnReturn() {
+ return autoCommitOnReturn;
+ }
+
/**
* True means that validation will fail immediately for connections that have previously thrown SQLExceptions with
* SQL_STATE indicating fatal disconnection errors.
@@ -294,17 +342,14 @@ public class PoolableConnectionFactory implements PooledObjectFactory<PoolableCo
public boolean isFastFailValidation() {
return fastFailValidation;
}
-
+
/**
- * @see #isFastFailValidation()
- * @param fastFailValidation
- * true means connections created by this factory will fast fail validation
- * @since 2.1
+ * @return Whether to rollback on return.
*/
- public void setFastFailValidation(final boolean fastFailValidation) {
- this.fastFailValidation = fastFailValidation;
+ public boolean isRollbackOnReturn() {
+ return rollbackOnReturn;
}
-
+
@Override
public PooledObject<PoolableConnection> makeObject() throws Exception {
Connection conn = connectionFactory.createConnection();
@@ -365,49 +410,7 @@ public class PoolableConnectionFactory implements PooledObjectFactory<PoolableCo
return new DefaultPooledObject<>(pc);
}
-
- protected void initializeConnection(final Connection conn) throws SQLException {
- final Collection<String> sqls = connectionInitSqls;
- if (conn.isClosed()) {
- throw new SQLException("initializeConnection: connection closed");
- }
- if (null != sqls) {
- try (Statement stmt = conn.createStatement()) {
- for (final String sql : sqls) {
- Objects.requireNonNull(sql, "null connectionInitSqls element");
- stmt.execute(sql);
- }
- }
- }
- }
-
- @Override
- public void destroyObject(final PooledObject<PoolableConnection> p) throws Exception {
- p.getObject().reallyClose();
- }
-
- @Override
- public boolean validateObject(final PooledObject<PoolableConnection> p) {
- try {
- validateLifetime(p);
-
- validateConnection(p.getObject());
- return true;
- } catch (final Exception e) {
- if (log.isDebugEnabled()) {
- log.debug(Utils.getMessage("poolableConnectionFactory.validateObject.fail"), e);
- }
- return false;
- }
- }
-
- public void validateConnection(final PoolableConnection conn) throws SQLException {
- if (conn.isClosed()) {
- throw new SQLException("validateConnection: connection closed");
- }
- conn.validate(validationQuery, validationQueryTimeoutSeconds);
- }
-
+
@Override
public void passivateObject(final PooledObject<PoolableConnection> p) throws Exception {
@@ -437,181 +440,218 @@ public class PoolableConnectionFactory implements PooledObjectFactory<PoolableCo
conn.passivate();
}
-
- @Override
- public void activateObject(final PooledObject<PoolableConnection> p) throws Exception {
-
- validateLifetime(p);
-
- final PoolableConnection conn = p.getObject();
- conn.activate();
-
- if (defaultAutoCommit != null && conn.getAutoCommit() != defaultAutoCommit.booleanValue()) {
- conn.setAutoCommit(defaultAutoCommit.booleanValue());
- }
- if (defaultTransactionIsolation != UNKNOWN_TRANSACTION_ISOLATION
- && conn.getTransactionIsolation() != defaultTransactionIsolation) {
- conn.setTransactionIsolation(defaultTransactionIsolation);
- }
- if (defaultReadOnly != null && conn.isReadOnly() != defaultReadOnly.booleanValue()) {
- conn.setReadOnly(defaultReadOnly.booleanValue());
- }
- if (defaultCatalog != null && !defaultCatalog.equals(conn.getCatalog())) {
- conn.setCatalog(defaultCatalog);
- }
- if (defaultSchema != null && !defaultSchema.equals(Jdbc41Bridge.getSchema(conn))) {
- Jdbc41Bridge.setSchema(conn, defaultSchema);
- }
- conn.setDefaultQueryTimeout(defaultQueryTimeoutSeconds);
+
+ public void setAutoCommitOnReturn(final boolean autoCommitOnReturn) {
+ this.autoCommitOnReturn = autoCommitOnReturn;
}
-
- private void validateLifetime(final PooledObject<PoolableConnection> p) throws Exception {
- if (maxConnLifetimeMillis > 0) {
- final long lifetime = System.currentTimeMillis() - p.getCreateTime();
- if (lifetime > maxConnLifetimeMillis) {
- throw new LifetimeExceededException(Utils.getMessage("connectionFactory.lifetimeExceeded",
- Long.valueOf(lifetime), Long.valueOf(maxConnLifetimeMillis)));
- }
- }
+
+ public void setCacheState(final boolean cacheState) {
+ this.cacheState = cacheState;
}
-
+
/**
- * @since Made public in 2.6.0.
+ * Sets the SQL statements I use to initialize newly created {@link Connection}s. Using {@code null} turns off
+ * connection initialization.
+ *
+ * @param connectionInitSqls
+ * SQL statement to initialize {@link Connection}s.
*/
- public ConnectionFactory getConnectionFactory() {
- return connectionFactory;
+ public void setConnectionInitSql(final Collection<String> connectionInitSqls) {
+ this.connectionInitSqls = connectionInitSqls;
}
-
+
/**
- * @since Made public in 2.6.0.
+ * Sets the default "auto commit" setting for borrowed {@link Connection}s
+ *
+ * @param defaultAutoCommit
+ * the default "auto commit" setting for borrowed {@link Connection}s
*/
- public boolean getPoolStatements() {
- return poolStatements;
- }
-
- protected int getMaxOpenPreparedStatements() {
- return maxOpenPreparedStatements;
+ public void setDefaultAutoCommit(final Boolean defaultAutoCommit) {
+ this.defaultAutoCommit = defaultAutoCommit;
}
-
+
/**
- * @since Made public in 2.6.0.
+ * Sets the default "catalog" setting for borrowed {@link Connection}s
+ *
+ * @param defaultCatalog
+ * the default "catalog" setting for borrowed {@link Connection}s
*/
- public boolean getCacheState() {
- return cacheState;
+ public void setDefaultCatalog(final String defaultCatalog) {
+ this.defaultCatalog = defaultCatalog;
+ }
+
+ public void setDefaultQueryTimeout(final Integer defaultQueryTimeoutSeconds) {
+ this.defaultQueryTimeoutSeconds = defaultQueryTimeoutSeconds;
}
-
/**
- * @since Made public in 2.6.0.
+ * Sets the default "read only" setting for borrowed {@link Connection}s
+ *
+ * @param defaultReadOnly
+ * the default "read only" setting for borrowed {@link Connection}s
*/
- public ObjectName getDataSourceJmxName() {
- return dataSourceJmxObjectName;
- }
-
- protected AtomicLong getConnectionIndex() {
- return connectionIndex;
+ public void setDefaultReadOnly(final Boolean defaultReadOnly) {
+ this.defaultReadOnly = defaultReadOnly;
}
-
- private final ConnectionFactory connectionFactory;
- private final ObjectName dataSourceJmxObjectName;
- private volatile String validationQuery;
- private volatile int validationQueryTimeoutSeconds = -1;
- private Collection<String> connectionInitSqls;
- private Collection<String> disconnectionSqlCodes;
- private boolean fastFailValidation = true;
- private volatile ObjectPool<PoolableConnection> pool;
- private Boolean defaultReadOnly;
- private Boolean defaultAutoCommit;
- private boolean autoCommitOnReturn = true;
- private boolean rollbackOnReturn = true;
- private int defaultTransactionIsolation = UNKNOWN_TRANSACTION_ISOLATION;
- private String defaultCatalog;
- private String defaultSchema;
- private boolean cacheState;
- private boolean poolStatements;
- private int maxOpenPreparedStatements = GenericKeyedObjectPoolConfig.DEFAULT_MAX_TOTAL_PER_KEY;
- private long maxConnLifetimeMillis = -1;
- private final AtomicLong connectionIndex = new AtomicLong(0);
- private Integer defaultQueryTimeoutSeconds;
-
+
/**
- * Internal constant to indicate the level is not set.
+ * Sets the default "schema" setting for borrowed {@link Connection}s
+ *
+ * @param defaultSchema
+ * the default "schema" setting for borrowed {@link Connection}s
+ * @since 2.5.0
*/
- static final int UNKNOWN_TRANSACTION_ISOLATION = -1;
-
+ public void setDefaultSchema(final String defaultSchema) {
+ this.defaultSchema = defaultSchema;
+ }
+
/**
- * @since 2.6.0
+ * Sets the default "Transaction Isolation" setting for borrowed {@link Connection}s
+ *
+ * @param defaultTransactionIsolation
+ * the default "Transaction Isolation" setting for returned {@link Connection}s
*/
- public ObjectName getDataSourceJmxObjectName() {
- return dataSourceJmxObjectName;
+ public void setDefaultTransactionIsolation(final int defaultTransactionIsolation) {
+ this.defaultTransactionIsolation = defaultTransactionIsolation;
}
-
+
/**
- * @since 2.6.0
+ * @param disconnectionSqlCodes
+ * The disconnection SQL codes.
+ * @see #getDisconnectionSqlCodes()
+ * @since 2.1
*/
- public String getValidationQuery() {
- return validationQuery;
+ public void setDisconnectionSqlCodes(final Collection<String> disconnectionSqlCodes) {
+ this.disconnectionSqlCodes = disconnectionSqlCodes;
}
-
+
/**
- * @since 2.6.0
+ * @param autoCommitOnReturn Whether to auto-commit on return.
+ * @deprecated Use {@link #setAutoCommitOnReturn(boolean)}.
*/
- public int getValidationQueryTimeoutSeconds() {
- return validationQueryTimeoutSeconds;
+ @Deprecated
+ public void setEnableAutoCommitOnReturn(final boolean autoCommitOnReturn) {
+ this.autoCommitOnReturn = autoCommitOnReturn;
}
/**
- * @since 2.6.0
+ * @see #isFastFailValidation()
+ * @param fastFailValidation
+ * true means connections created by this factory will fast fail validation
+ * @since 2.1
*/
- public Collection<String> getConnectionInitSqls() {
- return connectionInitSqls;
+ public void setFastFailValidation(final boolean fastFailValidation) {
+ this.fastFailValidation = fastFailValidation;
}
/**
- * @since 2.6.0
+ * Sets the maximum lifetime in milliseconds of a connection after which the connection will always fail activation,
+ * passivation and validation. A value of zero or less indicates an infinite lifetime. The default value is -1.
+ *
+ * @param maxConnLifetimeMillis
+ * The maximum lifetime in milliseconds.
*/
- public Boolean getDefaultReadOnly() {
- return defaultReadOnly;
+ public void setMaxConnLifetimeMillis(final long maxConnLifetimeMillis) {
+ this.maxConnLifetimeMillis = maxConnLifetimeMillis;
}
/**
- * @since 2.6.0
+ * Sets the maximum number of open prepared statements.
+ *
+ * @param maxOpenPreparedStatements
+ * The maximum number of open prepared statements.
*/
- public Boolean getDefaultAutoCommit() {
- return defaultAutoCommit;
+ public void setMaxOpenPreparedStatements(final int maxOpenPreparedStatements) {
+ this.maxOpenPreparedStatements = maxOpenPreparedStatements;
}
/**
- * @since 2.6.0
+ * Deprecated due to typo in method name.
+ *
+ * @param maxOpenPreparedStatements
+ * The maximum number of open prepared statements.
+ * @deprecated Use {@link #setMaxOpenPreparedStatements(int)}.
*/
- public int getDefaultTransactionIsolation() {
- return defaultTransactionIsolation;
+ @Deprecated // Due to typo in method name.
+ public void setMaxOpenPrepatedStatements(final int maxOpenPreparedStatements) {
+ setMaxOpenPreparedStatements(maxOpenPreparedStatements);
}
/**
- * @since 2.6.0
+ * Sets the {@link ObjectPool} in which to pool {@link Connection}s.
+ *
+ * @param pool
+ * the {@link ObjectPool} in which to pool those {@link Connection}s
*/
- public String getDefaultCatalog() {
- return defaultCatalog;
+ public synchronized void setPool(final ObjectPool<PoolableConnection> pool) {
+ if (null != this.pool && pool != this.pool) {
+ try {
+ this.pool.close();
+ } catch (final Exception e) {
+ // ignored !?!
+ }
+ }
+ this.pool = pool;
}
- /**
- * @since 2.6.0
- */
- public String getDefaultSchema() {
- return defaultSchema;
+ public void setPoolStatements(final boolean poolStatements) {
+ this.poolStatements = poolStatements;
+ }
+
+ public void setRollbackOnReturn(final boolean rollbackOnReturn) {
+ this.rollbackOnReturn = rollbackOnReturn;
}
/**
- * @since 2.6.0
+ * Sets the query I use to {@link #validateObject validate} {@link Connection}s. Should return at least one row. If
+ * not specified, {@link Connection#isValid(int)} will be used to validate connections.
+ *
+ * @param validationQuery
+ * a query to use to {@link #validateObject validate} {@link Connection}s.
*/
- public long getMaxConnLifetimeMillis() {
- return maxConnLifetimeMillis;
+ public void setValidationQuery(final String validationQuery) {
+ this.validationQuery = validationQuery;
}
/**
- * @since 2.6.0
+ * Sets the validation query timeout, the amount of time, in seconds, that connection validation will wait for a
+ * response from the database when executing a validation query. Use a value less than or equal to 0 for no timeout.
+ *
+ * @param validationQueryTimeoutSeconds
+ * new validation query timeout value in seconds
*/
- public Integer getDefaultQueryTimeoutSeconds() {
- return defaultQueryTimeoutSeconds;
+ public void setValidationQueryTimeout(final int validationQueryTimeoutSeconds) {
+ this.validationQueryTimeoutSeconds = validationQueryTimeoutSeconds;
+ }
+
+ public void validateConnection(final PoolableConnection conn) throws SQLException {
+ if (conn.isClosed()) {
+ throw new SQLException("validateConnection: connection closed");
+ }
+ conn.validate(validationQuery, validationQueryTimeoutSeconds);
+ }
+
+ private void validateLifetime(final PooledObject<PoolableConnection> p) throws Exception {
+ if (maxConnLifetimeMillis > 0) {
+ final long lifetime = System.currentTimeMillis() - p.getCreateTime();
+ if (lifetime > maxConnLifetimeMillis) {
+ throw new LifetimeExceededException(Utils.getMessage("connectionFactory.lifetimeExceeded",
+ Long.valueOf(lifetime), Long.valueOf(maxConnLifetimeMillis)));
+ }
+ }
+ }
+
+ @Override
+ public boolean validateObject(final PooledObject<PoolableConnection> p) {
+ try {
+ validateLifetime(p);
+
+ validateConnection(p.getObject());
+ return true;
+ } catch (final Exception e) {
+ if (log.isDebugEnabled()) {
+ log.debug(Utils.getMessage("poolableConnectionFactory.validateObject.fail"), e);
+ }
+ return false;
+ }
}
}
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/fbf2ef51/src/main/java/org/apache/commons/dbcp2/managed/LocalXAConnectionFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/managed/LocalXAConnectionFactory.java b/src/main/java/org/apache/commons/dbcp2/managed/LocalXAConnectionFactory.java
index 990aab1..f0c454d 100644
--- a/src/main/java/org/apache/commons/dbcp2/managed/LocalXAConnectionFactory.java
+++ b/src/main/java/org/apache/commons/dbcp2/managed/LocalXAConnectionFactory.java
@@ -336,6 +336,7 @@ public class LocalXAConnectionFactory implements XAConnectionFactory {
}
/**
+ * @return The connection factory.
* @since 2.6.0
*/
public ConnectionFactory getConnectionFactory() {
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/fbf2ef51/src/main/java/org/apache/commons/dbcp2/managed/ManagedConnection.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/managed/ManagedConnection.java b/src/main/java/org/apache/commons/dbcp2/managed/ManagedConnection.java
index 7c074e6..351fe87 100644
--- a/src/main/java/org/apache/commons/dbcp2/managed/ManagedConnection.java
+++ b/src/main/java/org/apache/commons/dbcp2/managed/ManagedConnection.java
@@ -149,6 +149,7 @@ public class ManagedConnection<C extends Connection> extends DelegatingConnectio
}
/**
+ * @return The transaction context.
* @since 2.6.0
*/
public TransactionContext getTransactionContext() {
@@ -156,6 +157,7 @@ public class ManagedConnection<C extends Connection> extends DelegatingConnectio
}
/**
+ * @return The transaction registry.
* @since 2.6.0
*/
public TransactionRegistry getTransactionRegistry() {
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/fbf2ef51/src/main/java/org/apache/commons/dbcp2/managed/PoolableManagedConnection.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/managed/PoolableManagedConnection.java b/src/main/java/org/apache/commons/dbcp2/managed/PoolableManagedConnection.java
index 5055e61..f6c0acf 100644
--- a/src/main/java/org/apache/commons/dbcp2/managed/PoolableManagedConnection.java
+++ b/src/main/java/org/apache/commons/dbcp2/managed/PoolableManagedConnection.java
@@ -71,6 +71,7 @@ public class PoolableManagedConnection extends PoolableConnection {
}
/**
+ * @return The transaction registry.
* @since 2.6.0
*/
public TransactionRegistry getTransactionRegistry() {
http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/fbf2ef51/src/main/java/org/apache/commons/dbcp2/managed/PoolableManagedConnectionFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbcp2/managed/PoolableManagedConnectionFactory.java b/src/main/java/org/apache/commons/dbcp2/managed/PoolableManagedConnectionFactory.java
index e62b65d..de730e5 100644
--- a/src/main/java/org/apache/commons/dbcp2/managed/PoolableManagedConnectionFactory.java
+++ b/src/main/java/org/apache/commons/dbcp2/managed/PoolableManagedConnectionFactory.java
@@ -57,6 +57,7 @@ public class PoolableManagedConnectionFactory extends PoolableConnectionFactory
}
/**
+ * @return The transaction registry.
* @since 2.6.0
*/
public TransactionRegistry getTransactionRegistry() {