Package org.logicalcobwebs.proxool
Interface ProxyConnectionIF
-
- All Superinterfaces:
java.lang.Comparable
,ConnectionInfoIF
- All Known Implementing Classes:
ProxyConnection
public interface ProxyConnectionIF extends ConnectionInfoIF
Contains most of the functionality that we require to manipilate the connection. The subclass of this defines how we delegate to the real connection.- Since:
- Proxool 0.7
- Version:
- $Revision: 1.8 $, $Date: 2007/01/25 23:38:24 $
- Author:
- bill, $Author: billhorsman $ (current maintainer)
-
-
Field Summary
-
Fields inherited from interface org.logicalcobwebs.proxool.ConnectionInfoIF
MARK_FOR_EXPIRY, MARK_FOR_USE, STATUS_ACTIVE, STATUS_AVAILABLE, STATUS_NULL, STATUS_OFFLINE
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
close()
Doesn't really close the connection, just puts it back in the pool.java.sql.Connection
getConnection()
The real, delegate connection that we are usingConnectionPoolDefinitionIF
getDefinition()
java.lang.String
getLastSqlCall()
Get the most recent of all theConnectionInfoIF.getSqlCalls()
int
getReasonCode()
Get the reason why this connection ismarked
java.lang.String
getReasonForMark()
Why this connection is marked (for instance, if a thread has marked it for expiry then it's nice to know why)boolean
isActive()
boolean
isAvailable()
boolean
isMarkedForExpiry()
Whether this connection is due for expiryboolean
isNull()
boolean
isOffline()
boolean
isReallyClosed()
Find out if the delegated connection is close.void
markForExpiry(java.lang.String reason)
Mark this connection for expiry (destruction) as soon as it stops being active.void
reallyClose()
Really close the connection, as opposed to just putting it back in the pool.void
registerClosedStatement(java.sql.Statement statement)
Notify that a statement has been closed and won't need closing when the connection is returned to the poo.void
setRequester(java.lang.String requester)
boolean
setStatus(int newStatus)
Forces the new status regardless of the old stateboolean
setStatus(int oldStatus, int newStatus)
Changes the status and lets the ConnectionPool know so that it can keep count of how many connections are at each status.-
Methods inherited from interface org.logicalcobwebs.proxool.ConnectionInfoIF
getAge, getBirthDate, getBirthTime, getDelegateHashcode, getDelegateUrl, getId, getMark, getProxyHashcode, getRequester, getSqlCalls, getStatus, getTimeLastStartActive, getTimeLastStopActive
-
-
-
-
Method Detail
-
setStatus
boolean setStatus(int oldStatus, int newStatus)
Changes the status and lets the ConnectionPool know so that it can keep count of how many connections are at each status. This method obtains a write lock.- Parameters:
oldStatus
- the expected existing status. if the existing status is not this value then no change is made and false is returned.newStatus
- the status to change to- Returns:
- true if status changed successfully, or false if no change made (because of unexpected existing status).
-
setStatus
boolean setStatus(int newStatus)
Forces the new status regardless of the old state- Parameters:
newStatus
- the status to change to- Returns:
- true if status changed successfully, or false if no change made (should always return true)
- See Also:
setStatus(int, int)
-
markForExpiry
void markForExpiry(java.lang.String reason)
Mark this connection for expiry (destruction) as soon as it stops being active.- Parameters:
reason
- why we are marking this connection- See Also:
isMarkedForExpiry()
-
isMarkedForExpiry
boolean isMarkedForExpiry()
Whether this connection is due for expiry- Returns:
- true if it is due for expiry
- See Also:
markForExpiry(java.lang.String)
-
getReasonForMark
java.lang.String getReasonForMark()
Why this connection is marked (for instance, if a thread has marked it for expiry then it's nice to know why)- Returns:
- reasonForMark
-
getConnection
java.sql.Connection getConnection()
The real, delegate connection that we are using- Returns:
- connection
-
isNull
boolean isNull()
- Returns:
- true if the status is null
-
isAvailable
boolean isAvailable()
- Returns:
- true if the status is available
-
isActive
boolean isActive()
- Returns:
- true if the status is active
-
isOffline
boolean isOffline()
- Returns:
- true if the status is offline
-
reallyClose
void reallyClose() throws java.sql.SQLException
Really close the connection, as opposed to just putting it back in the pool.- Throws:
java.sql.SQLException
-
setRequester
void setRequester(java.lang.String requester)
- See Also:
ConnectionInfoIF.getRequester()
-
close
void close() throws java.sql.SQLException
Doesn't really close the connection, just puts it back in the pool. And tries to reset all the methods that need resetting.- Throws:
java.sql.SQLException
- See Also:
Connection.close()
-
registerClosedStatement
void registerClosedStatement(java.sql.Statement statement)
Notify that a statement has been closed and won't need closing when the connection is returned to the poo.- Parameters:
statement
- the statement that has just been closed
-
isReallyClosed
boolean isReallyClosed() throws java.sql.SQLException
Find out if the delegated connection is close. Just calling isClosed() on the proxied connection will only indicate whether it is in the pool or not.- Returns:
- true if the connection is really closed, or if the connection is null
- Throws:
java.sql.SQLException
- if anything went wrong
-
getDefinition
ConnectionPoolDefinitionIF getDefinition()
-
getLastSqlCall
java.lang.String getLastSqlCall()
Get the most recent of all theConnectionInfoIF.getSqlCalls()
- Returns:
- the SQL (could be a batch of SQLs)
-
getReasonCode
int getReasonCode()
Get the reason why this connection ismarked
- Returns:
ConnectionListenerIF.MAXIMUM_ACTIVE_TIME_EXPIRED
,ConnectionListenerIF.HOUSE_KEEPER_TEST_FAIL
,ConnectionListenerIF.FATAL_SQL_EXCEPTION_DETECTED
,ConnectionListenerIF.MANUAL_EXPIRY
,ConnectionListenerIF.MAXIMUM_CONNECTION_LIFETIME_EXCEEDED
,ConnectionListenerIF.RESET_FAIL
,ConnectionListenerIF.SHUTDOWN
, orConnectionListenerIF.VALIDATION_FAIL
-
-