GATE
Version 3.1-2270

gate.persist
Class ConnectionPool

java.lang.Object
  extended by gate.persist.ConnectionPool

public class ConnectionPool
extends Object

A generic implementation of pool of references to objects of any kind. It is thread-safe, so, allows multiple users to get and release objects "simultaneously". In fact, the standard Java synchronization is used.

The base idea is that, a calling routine will try to get an object from the pool with method Get. On success, it will use the object and return it in the pool with the method Put.

If there ares no available objects in the pool, Get will return null. Then the calling routine should create a new object. Further, scenario goes in the same way - when finished using the object, calling routine shoud Put it in the pool for future use, instead of leaving it to be garbage-collected.

The pool initially is empty. The only way to increase the number of objects managed by the pool, is some external process to Put an object, that was created, instead of previously Get from the pool.

Pool stores only references to currently "free" or available objects. When some external routine Gets an object from the pool, its reference is not locked, it is simply removed from the pool.


Constructor Summary
ConnectionPool(int size, String url)
          Constructs and object pool with specified size.
 
Method Summary
 void finalize()
           
 Connection get()
          Pulls out an object from the pool.
 boolean put(Connection conn)
          Puts an object in the pool, those stating that it's "free" or available for use by another processes and routines.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConnectionPool

public ConnectionPool(int size,
                      String url)
Constructs and object pool with specified size.

Parameters:
size - determines the maximum size of the pool. This is the number free objects that it can manage at the same time
Method Detail

get

public Connection get()
               throws SQLException,
                      ClassNotFoundException
Pulls out an object from the pool. The reference to the object is removed from the pool and their is no longer any kind of relation between this object and the pool. It can be returned back (released) by Put method.

Returns:
an object from the pool, if available.
Otherwise, returns null
Throws:
SQLException
ClassNotFoundException

put

public boolean put(Connection conn)
Puts an object in the pool, those stating that it's "free" or available for use by another processes and routines. An object can be put in the pool, without need to be get from there before.

Returns:
true on success
false when the object was not put in the pool, because the maximal number of references in the pool was riched

finalize

public void finalize()
Overrides:
finalize in class Object

GATE
Version 3.1-2270