: Class PooledConnection

com.bitmechanic.sql
Class PooledConnection

java.lang.Object
  |
  +--com.bitmechanic.sql.PooledConnection

public class PooledConnection
extends java.lang.Object
implements java.sql.Connection, java.lang.Runnable


Fields inherited from interface java.sql.Connection
TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE
 
Constructor Summary
PooledConnection(java.sql.Connection conn, ConnectionPool pool)
           
 
Method Summary
 void clearWarnings()
           
 void close()
          Doesn't actually close the connection, but instead returns itself back to the pool to be re-used.
 void closeStatements()
          Closes all PreparedStatments and CallableStatements
 void commit()
           
 java.sql.Statement createStatement()
           
 java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency)
           
 java.lang.String dumpInfo()
          Dump some information about this connection and the statement
 boolean getAutoCommit()
           
 java.lang.String getCatalog()
           
 int getCheckoutCount()
          Returns number of times this node has been checked out from the pool
protected  java.sql.Connection getConnection()
           
 long getLastAccess()
          Returns when this connection was last checked out; 0 if it has never been used.
 long getLastCheckin()
          Returns when this connection was last checked in (when it's lock was last released); 0 if it has never been released.
 boolean getLock()
          Returns true if this Connection is not in use.
 java.sql.DatabaseMetaData getMetaData()
           
 java.sql.Connection getNativeConnection()
           
 java.lang.Exception getTraceException()
          If the connection pool is in trace mode, you can examine the stack trace in this exception to determine where it was last checked out.
 int getTransactionIsolation()
           
 java.util.Map getTypeMap()
          Proxy all other JDBC calls to actual Connection object
 java.sql.SQLWarning getWarnings()
           
 void guardConnection()
           
 boolean isClosed()
           
 boolean isLocked()
           
 boolean isReadOnly()
           
 java.lang.String nativeSQL(java.lang.String sql)
           
 java.sql.CallableStatement prepareCall(java.lang.String sql)
           
 java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency)
           
 java.sql.PreparedStatement prepareStatement(java.lang.String sql)
           
 java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)
           
protected  void releaseLock()
          called by ConnectionPool.returnConnection() right before it wakes up the threads
 void rollback()
           
 void run()
          This is used by ConnectionPool.removeConnection().
 void setAutoCommit(boolean autoCommit)
           
 void setCatalog(java.lang.String catalog)
           
 void setReadOnly(boolean readOnly)
           
protected  void setTraceException(java.lang.Exception e)
           
 void setTransactionIsolation(int level)
           
 void setTypeMap(java.util.Map map)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PooledConnection

public PooledConnection(java.sql.Connection conn,
                        ConnectionPool pool)
Method Detail

run

public void run()
This is used by ConnectionPool.removeConnection(). It closes all statements and closes the actual JDBC Connection. We implement this in a runnable method so that we can run this in a separate Thread and use a timeout mechanism to avoid deadlock (which was occurring when trying to close a Connection that had a query in progress)
Specified by:
run in interface java.lang.Runnable

closeStatements

public void closeStatements()
                     throws java.sql.SQLException
Closes all PreparedStatments and CallableStatements

getLock

public boolean getLock()
Returns true if this Connection is not in use. Returns false if it is in use

isLocked

public boolean isLocked()

getCheckoutCount

public int getCheckoutCount()
Returns number of times this node has been checked out from the pool

getLastAccess

public long getLastAccess()
Returns when this connection was last checked out; 0 if it has never been used.

getLastCheckin

public long getLastCheckin()
Returns when this connection was last checked in (when it's lock was last released); 0 if it has never been released.

close

public void close()
           throws java.sql.SQLException
Doesn't actually close the connection, but instead returns itself back to the pool to be re-used. However, if you specified maxCheckouts in the constructor, then this *will* close the JDBC Connection and re-open it if the number of checkouts has been exceeded.
Specified by:
close in interface java.sql.Connection

releaseLock

protected void releaseLock()
called by ConnectionPool.returnConnection() right before it wakes up the threads

getConnection

protected java.sql.Connection getConnection()

getNativeConnection

public java.sql.Connection getNativeConnection()

dumpInfo

public java.lang.String dumpInfo()
Dump some information about this connection and the statement

guardConnection

public void guardConnection()

createStatement

public java.sql.Statement createStatement()
                                   throws java.sql.SQLException
Specified by:
createStatement in interface java.sql.Connection

getTypeMap

public java.util.Map getTypeMap()
                         throws java.sql.SQLException
Proxy all other JDBC calls to actual Connection object
Specified by:
getTypeMap in interface java.sql.Connection

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql)
                                            throws java.sql.SQLException
Specified by:
prepareStatement in interface java.sql.Connection

prepareStatement

public java.sql.PreparedStatement prepareStatement(java.lang.String sql,
                                                   int resultSetType,
                                                   int resultSetConcurrency)
                                            throws java.sql.SQLException
Specified by:
prepareStatement in interface java.sql.Connection

prepareCall

public java.sql.CallableStatement prepareCall(java.lang.String sql)
                                       throws java.sql.SQLException
Specified by:
prepareCall in interface java.sql.Connection

prepareCall

public java.sql.CallableStatement prepareCall(java.lang.String sql,
                                              int resultSetType,
                                              int resultSetConcurrency)
                                       throws java.sql.SQLException
Specified by:
prepareCall in interface java.sql.Connection

createStatement

public java.sql.Statement createStatement(int resultSetType,
                                          int resultSetConcurrency)
                                   throws java.sql.SQLException
Specified by:
createStatement in interface java.sql.Connection

nativeSQL

public java.lang.String nativeSQL(java.lang.String sql)
                           throws java.sql.SQLException
Specified by:
nativeSQL in interface java.sql.Connection

setAutoCommit

public void setAutoCommit(boolean autoCommit)
                   throws java.sql.SQLException
Specified by:
setAutoCommit in interface java.sql.Connection

getAutoCommit

public boolean getAutoCommit()
                      throws java.sql.SQLException
Specified by:
getAutoCommit in interface java.sql.Connection

commit

public void commit()
            throws java.sql.SQLException
Specified by:
commit in interface java.sql.Connection

rollback

public void rollback()
              throws java.sql.SQLException
Specified by:
rollback in interface java.sql.Connection

isClosed

public boolean isClosed()
                 throws java.sql.SQLException
Specified by:
isClosed in interface java.sql.Connection

getMetaData

public java.sql.DatabaseMetaData getMetaData()
                                      throws java.sql.SQLException
Specified by:
getMetaData in interface java.sql.Connection

setReadOnly

public void setReadOnly(boolean readOnly)
                 throws java.sql.SQLException
Specified by:
setReadOnly in interface java.sql.Connection

isReadOnly

public boolean isReadOnly()
                   throws java.sql.SQLException
Specified by:
isReadOnly in interface java.sql.Connection

setCatalog

public void setCatalog(java.lang.String catalog)
                throws java.sql.SQLException
Specified by:
setCatalog in interface java.sql.Connection

getCatalog

public java.lang.String getCatalog()
                            throws java.sql.SQLException
Specified by:
getCatalog in interface java.sql.Connection

setTypeMap

public void setTypeMap(java.util.Map map)
                throws java.sql.SQLException
Specified by:
setTypeMap in interface java.sql.Connection

setTransactionIsolation

public void setTransactionIsolation(int level)
                             throws java.sql.SQLException
Specified by:
setTransactionIsolation in interface java.sql.Connection

getTransactionIsolation

public int getTransactionIsolation()
                            throws java.sql.SQLException
Specified by:
getTransactionIsolation in interface java.sql.Connection

getWarnings

public java.sql.SQLWarning getWarnings()
                                throws java.sql.SQLException
Specified by:
getWarnings in interface java.sql.Connection

clearWarnings

public void clearWarnings()
                   throws java.sql.SQLException
Specified by:
clearWarnings in interface java.sql.Connection

setTraceException

protected void setTraceException(java.lang.Exception e)

getTraceException

public java.lang.Exception getTraceException()
If the connection pool is in trace mode, you can examine the stack trace in this exception to determine where it was last checked out.