edu.ucsb.nceas.metacat.database

## Class DBConnectionPool

- java.lang.Object
- - edu.ucsb.nceas.metacat.database.DBConnectionPool

- All Implemented Interfaces:
    java.lang.Runnable

      public class DBConnectionPool
      extends java.lang.Object
      implements java.lang.Runnable

  A class represent a DBConnection pool. Another user can use the object to initial a connection pool, get db connection or return it. This a singleton class, this means only one instance of this class could be in the program at one time.

- - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static DBConnection` | `getDBConnection(java.lang.String methodName)` Method to get a DBConnection in connection pool 1) try to get a DBConnection from DBConnection pool 2) if 1) failed, then check the size of pool.
    `static DBConnectionPool` | `getInstance()` Returns the single instance, creating one if it's the first time this method is called.
    `int` | `getSizeOfDBConnectionPool()` Method to get the size of DBConnectionPool
    `static void` | `release()` Method to shut down all connections
    `static void` | `returnDBConnection(DBConnection conn, int serialNumber)` Method to return a connection to DBConnection pool.
    `void` | `run()` periodically to recycle the connection
    `static boolean` | `shrinkConnectionPoolSize()` Method to decrease dbconnection pool size when all dbconnections are idle If all connections are free and connection pool size greater than initial value, shrink connection pool size to initial value
    `static void` | `shrinkDBConnectionPoolSize()` Method to decrease dbconnection pool size when all dbconnections are idle If all connections are free and connection pool size greater than initial value, shrink connection pool size to intital value

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### getInstance

          public static DBConnectionPool getInstance()
                                              throws java.sql.SQLException

      Returns the single instance, creating one if it's the first time this method is called.
      Throws:
        `java.sql.SQLException`

    - #### getSizeOfDBConnectionPool

          public int getSizeOfDBConnectionPool()

      Method to get the size of DBConnectionPool

    - #### getDBConnection

          public static DBConnection getDBConnection(java.lang.String methodName)
                                              throws java.sql.SQLException

      Method to get a DBConnection in connection pool 1) try to get a DBConnection from DBConnection pool 2) if 1) failed, then check the size of pool. If the size reach the maximum number of connection, throw a exception: couldn't get one 3) If the size is less than the maximum number of connectio, create some new connections and recursive get one
      Parameters:
        `methodName,` - the name of method which will check connection out
      Throws:
        `java.sql.SQLException`

    - #### returnDBConnection

          public static void returnDBConnection(DBConnection conn,
                                                int serialNumber)

      Method to return a connection to DBConnection pool.
      Parameters:
        `conn,` - the Connection object need to check in

    - #### release

          public static void release()

      Method to shut down all connections

    - #### run

          public void run()

      periodically to recycle the connection
      Specified by:
        `run` in interface `java.lang.Runnable`

    - #### shrinkConnectionPoolSize

          public static boolean shrinkConnectionPoolSize()

      Method to decrease dbconnection pool size when all dbconnections are idle If all connections are free and connection pool size greater than initial value, shrink connection pool size to initial value

    - #### shrinkDBConnectionPoolSize

          public static void shrinkDBConnectionPoolSize()

      Method to decrease dbconnection pool size when all dbconnections are idle If all connections are free and connection pool size greater than initial value, shrink connection pool size to intital value

Copyright © 2020 Regents of the University of California. All Rights Reserved.