You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2013/08/01 16:29:21 UTC
svn commit: r1509249 - in
/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2:
BasicDataSource.java LocalStrings.properties SwallowedExceptionLogger.java
datasources/PerUserPoolDataSource.java
Author: markt
Date: Thu Aug 1 14:29:21 2013
New Revision: 1509249
URL: http://svn.apache.org/r1509249
Log:
Use the new SwallowedExceptionListener interface for all instances of GOP used by DBCP
Added:
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/SwallowedExceptionLogger.java (with props)
Modified:
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/BasicDataSource.java
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/LocalStrings.properties
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/datasources/PerUserPoolDataSource.java
Modified: commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/BasicDataSource.java
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/BasicDataSource.java?rev=1509249&r1=1509248&r2=1509249&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/BasicDataSource.java (original)
+++ commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/BasicDataSource.java Thu Aug 1 14:29:21 2013
@@ -33,6 +33,8 @@ import java.sql.SQLFeatureNotSupportedEx
import javax.sql.DataSource;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.impl.AbandonedConfig;
import org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig;
@@ -56,6 +58,9 @@ import org.apache.commons.pool2.impl.Gen
*/
public class BasicDataSource implements DataSource {
+ private static final Log log =
+ LogFactory.getLog(BasicDataSource.class);
+
static {
// Attempt to prevent deadlocks - see DBCP - 272
DriverManager.getDrivers();
@@ -1790,6 +1795,7 @@ public class BasicDataSource implements
gop.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
gop.setTestWhileIdle(testWhileIdle);
gop.setLifo(lifo);
+ gop.setSwallowedExceptionListener(new SwallowedExceptionLogger(log));
factory.setPool(gop);
connectionPool = gop;
}
Modified: commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/LocalStrings.properties
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/LocalStrings.properties?rev=1509249&r1=1509248&r2=1509249&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/LocalStrings.properties (original)
+++ commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/LocalStrings.properties Thu Aug 1 14:29:21 2013
@@ -15,4 +15,6 @@
connectionFactory.lifetimeExceeded=The lifetime of the connection [{0}] milliseconds exceeds the maximum permitted value of [{1}] milliseconds
-poolableConnectionFactory.validateObject.fail=Failed to validate a poolable connection
\ No newline at end of file
+poolableConnectionFactory.validateObject.fail=Failed to validate a poolable connection
+
+swallowedExceptionLogger.onSwallowedException=An internal object pool swallowed an Exception
\ No newline at end of file
Added: commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/SwallowedExceptionLogger.java
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/SwallowedExceptionLogger.java?rev=1509249&view=auto
==============================================================================
--- commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/SwallowedExceptionLogger.java (added)
+++ commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/SwallowedExceptionLogger.java Thu Aug 1 14:29:21 2013
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.dbcp2;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.pool2.SwallowedExceptionListener;
+
+public class SwallowedExceptionLogger implements SwallowedExceptionListener{
+
+ private final Log log;
+
+ public SwallowedExceptionLogger(Log log) {
+ this.log = log;
+ }
+
+ @Override
+ public void onSwallowException(Exception e) {
+ log.warn(Utils.getMessage(
+ "swallowedExceptionLogger.onSwallowedException"), e);
+ }
+}
Propchange: commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/SwallowedExceptionLogger.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/datasources/PerUserPoolDataSource.java
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/datasources/PerUserPoolDataSource.java?rev=1509249&r1=1509248&r2=1509249&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/datasources/PerUserPoolDataSource.java (original)
+++ commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/datasources/PerUserPoolDataSource.java Thu Aug 1 14:29:21 2013
@@ -30,6 +30,9 @@ import javax.naming.Reference;
import javax.naming.StringRefAddr;
import javax.sql.ConnectionPoolDataSource;
+import org.apache.commons.dbcp2.SwallowedExceptionLogger;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.commons.pool2.ObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
@@ -59,6 +62,9 @@ public class PerUserPoolDataSource exten
private static final long serialVersionUID = -3104731034410444060L;
+ private static final Log log =
+ LogFactory.getLog(PerUserPoolDataSource.class);
+
private int defaultMaxTotal = GenericObjectPoolConfig.DEFAULT_MAX_TOTAL;
private int defaultMaxIdle = GenericObjectPoolConfig.DEFAULT_MAX_IDLE;
private int defaultMaxWaitMillis = (int)Math.min(Integer.MAX_VALUE,
@@ -543,6 +549,7 @@ public class PerUserPoolDataSource exten
pool.setNumTestsPerEvictionRun(getNumTestsPerEvictionRun());
pool.setMinEvictableIdleTimeMillis(getMinEvictableIdleTimeMillis());
pool.setTestWhileIdle(getTestWhileIdle());
+ pool.setSwallowedExceptionListener(new SwallowedExceptionLogger(log));
Object old = managers.put(getPoolKey(username,password), factory);
if (old != null) {