From 7f700a2adeccd011b233e7af91b7816801a395e6 Mon Sep 17 00:00:00 2001 From: wenshao Date: Wed, 23 Jan 2013 15:46:44 +0800 Subject: [PATCH] bug fixed for DB2 --- .../druid/pool/DruidConnectionHolder.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java b/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java index 27a45bfd63..32ae7e4c2c 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java +++ b/src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java @@ -26,6 +26,8 @@ import java.util.concurrent.CopyOnWriteArrayList; import javax.sql.ConnectionEventListener; import javax.sql.StatementEventListener; +import com.alibaba.druid.support.logging.Log; +import com.alibaba.druid.support.logging.LogFactory; import com.alibaba.druid.util.IOUtils; import com.alibaba.druid.util.JdbcConstants; import com.alibaba.druid.util.JdbcUtils; @@ -34,7 +36,8 @@ import com.alibaba.druid.util.JdbcUtils; * @author wenshao */ public final class DruidConnectionHolder { - + private final static Log LOG = LogFactory.getLog(DruidConnectionHolder.class); + private final DruidAbstractDataSource dataSource; private final Connection conn; private final List connectionEventListeners = new CopyOnWriteArrayList(); @@ -66,16 +69,31 @@ public final class DruidConnectionHolder { this.lastActiveTimeMillis = connecttimeMillis; this.underlyingAutoCommit = conn.getAutoCommit(); - - if (!JdbcConstants.SYBASE.equals(dataSource.getDbType())) { - this.underlyingHoldability = conn.getHoldability(); + + { + boolean initUnderlyHoldability = true; + if (JdbcConstants.SYBASE.equals(dataSource.getDbType()) // + || JdbcConstants.DB2.equals(dataSource.getDbType()) // + ) { + initUnderlyHoldability = false; + } + if (initUnderlyHoldability) { + try { + this.underlyingHoldability = conn.getHoldability(); + } catch (SQLException e) { + LOG.warn("getHoldability error", e); + } + } } this.underlyingReadOnly = conn.isReadOnly(); try { this.underlyingTransactionIsolation = conn.getTransactionIsolation(); } catch (SQLException e) { - if (!"com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException".equals(e.getClass().getName())) { + if (!"com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException".equals(e.getClass().getName())) { // compatible + // for + // alibaba + // corba throw e; } }