001: /*
002: * Enhydra Java Application Server Project
003: *
004: * The contents of this file are subject to the Enhydra Public License
005: * Version 1.1 (the "License"); you may not use this file except in
006: * compliance with the License. You may obtain a copy of the License on
007: * the Enhydra web site ( http://www.enhydra.org/ ).
008: *
009: * Software distributed under the License is distributed on an "AS IS"
010: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
011: * the License for the specific terms governing rights and limitations
012: * under the License.
013: *
014: * The Initial Developer of the Enhydra Application Server is Lutris
015: * Technologies, Inc. The Enhydra Application Server and portions created
016: * by Lutris Technologies, Inc. are Copyright Lutris Technologies, Inc.
017: * All Rights Reserved.
018: *
019: * Contributor(s):
020: *
021: * $Id: ConnectionAllocator.java,v 1.1 2007-01-24 16:59:09 sinisa Exp $
022: */
023: package com.lutris.appserver.server.sql;
024:
025: import java.util.Date;
026:
027: /**
028: * Defines the connection allocator. A connection allocator is an integral
029: * part of a logical database implementation. It manages a pool of database
030: * connections.
031: *
032: * @author Paul Morgan
033: * @since LBS1.8
034: * @version $Revision: 1.1 $
035: */
036: public interface ConnectionAllocator {
037:
038: /**
039: * Allocate a connection either from the managed pool or create a new.
040: *
041: * @exception java.sql.SQLException
042: * if a SQL error occures.
043: */
044: DBConnection allocate() throws java.sql.SQLException;
045:
046: /**
047: * Return a connection to the pool. If it is of an old generation,
048: * close and drop.
049: *
050: * @param dbConnection The connection object to return.
051: */
052: void release(DBConnection dbConnection);
053:
054: /**
055: * Used to drop a connection from the pool. The connection
056: * should not be re-allocated
057: *
058: * @param dbConnection
059: * The connection object to drop.
060: */
061: void drop(DBConnection dbConnection);
062:
063: /**
064: * Drop all the connection in the pool immediately.
065: */
066: void dropAllNow();
067:
068: /**
069: * Return the number of currently active (allocated) connections.
070: *
071: * @return The number of connections.
072: */
073: public int getActiveCount();
074:
075: /**
076: * Return the maximum number of connections active at one time.
077: *
078: * @return The number of connections.
079: */
080: public int getMaxCount();
081:
082: /**
083: * Return the time when the maximum connection count occured.
084: *
085: * @return The <CODE>Date</CODE> when the maximum connection
086: * count occured.
087: */
088: public Date getMaxCountDate();
089:
090: /**
091: * Reset the maximum connection count and date.
092: */
093: public void resetMaxCount();
094:
095: /**
096: * Return the number of database requests made on any of the
097: * connection allocated from this managed pool. Implementations
098: * of the connection allocator must provide a mechanism for
099: * <CODE>DBQuery</CODE> and <CODE>DBTransaction</CODE> objects
100: * to count requests.
101: *
102: * @return The number of database requests (queries or transactions).
103: */
104: public long getRequestCount();
105:
106: /**
107: * @return database name of current connection
108: *
109: */
110: public String getDatabaseName();
111:
112: }
|