Package org.h2.jdbcx

Class JdbcConnectionPool

java.lang.Object
org.h2.jdbcx.JdbcConnectionPool
All Implemented Interfaces:
Wrapper, EventListener, CommonDataSource, ConnectionEventListener, DataSource, JdbcConnectionPoolBackwardsCompat

public final class JdbcConnectionPool extends Object implements DataSource, ConnectionEventListener, JdbcConnectionPoolBackwardsCompat
A simple standalone JDBC connection pool. It is based on the MiniConnectionPoolManager written by Christian d'Heureuse (Java 1.5) . It is used as follows:
 import java.sql.*;
 import org.h2.jdbcx.JdbcConnectionPool;
 public class Test {
     public static void main(String... args) throws Exception {
         JdbcConnectionPool cp = JdbcConnectionPool.create(
             "jdbc:h2:~/test", "sa", "sa");
         for (String sql : args) {
             Connection conn = cp.getConnection();
             conn.createStatement().execute(sql);
             conn.close();
         }
         cp.dispose();
     }
 }
 
  • Method Details

    • create

      public static JdbcConnectionPool create(ConnectionPoolDataSource dataSource)
      Constructs a new connection pool.
      Parameters:
      dataSource - the data source to create connections
      Returns:
      the connection pool
    • create

      public static JdbcConnectionPool create(String url, String user, String password)
      Constructs a new connection pool for H2 databases.
      Parameters:
      url - the database URL of the H2 connection
      user - the user name
      password - the password
      Returns:
      the connection pool
    • setMaxConnections

      public void setMaxConnections(int max)
      Sets the maximum number of connections to use from now on. The default value is 10 connections.
      Parameters:
      max - the maximum number of connections
    • getMaxConnections

      public int getMaxConnections()
      Gets the maximum number of connections to use.
      Returns:
      the max the maximum number of connections
    • getLoginTimeout

      public int getLoginTimeout()
      Gets the maximum time in seconds to wait for a free connection.
      Specified by:
      getLoginTimeout in interface CommonDataSource
      Specified by:
      getLoginTimeout in interface DataSource
      Returns:
      the timeout in seconds
    • setLoginTimeout

      public void setLoginTimeout(int seconds)
      Sets the maximum time in seconds to wait for a free connection. The default timeout is 30 seconds. Calling this method with the value 0 will set the timeout to the default value.
      Specified by:
      setLoginTimeout in interface CommonDataSource
      Specified by:
      setLoginTimeout in interface DataSource
      Parameters:
      seconds - the timeout, 0 meaning the default
    • dispose

      public void dispose()
      Closes all unused pooled connections. Exceptions while closing are written to the log stream (if set).
    • getConnection

      public Connection getConnection() throws SQLException
      Retrieves a connection from the connection pool. If maxConnections connections are already in use, the method waits until a connection becomes available or timeout seconds elapsed. When the application is finished using the connection, it must close it in order to return it to the pool. If no connection becomes available within the given timeout, an exception with SQL state 08001 and vendor code 8001 is thrown.
      Specified by:
      getConnection in interface DataSource
      Returns:
      a new Connection object.
      Throws:
      SQLException - when a new connection could not be established, or a timeout occurred
    • getConnection

      public Connection getConnection(String user, String password)
      INTERNAL
      Specified by:
      getConnection in interface DataSource
    • connectionClosed

      public void connectionClosed(ConnectionEvent event)
      INTERNAL
      Specified by:
      connectionClosed in interface ConnectionEventListener
    • connectionErrorOccurred

      public void connectionErrorOccurred(ConnectionEvent event)
      INTERNAL
      Specified by:
      connectionErrorOccurred in interface ConnectionEventListener
    • getActiveConnections

      public int getActiveConnections()
      Returns the number of active (open) connections of this pool. This is the number of Connection objects that have been issued by getConnection() for which Connection.close() has not yet been called.
      Returns:
      the number of active connections.
    • getLogWriter

      public PrintWriter getLogWriter()
      INTERNAL
      Specified by:
      getLogWriter in interface CommonDataSource
      Specified by:
      getLogWriter in interface DataSource
    • setLogWriter

      public void setLogWriter(PrintWriter logWriter)
      INTERNAL
      Specified by:
      setLogWriter in interface CommonDataSource
      Specified by:
      setLogWriter in interface DataSource
    • unwrap

      public <T> T unwrap(Class<T> iface) throws SQLException
      Return an object of this class if possible.
      Specified by:
      unwrap in interface Wrapper
      Parameters:
      iface - the class
      Returns:
      this
      Throws:
      SQLException
    • isWrapperFor

      public boolean isWrapperFor(Class<?> iface) throws SQLException
      Checks if unwrap can return an object of this class.
      Specified by:
      isWrapperFor in interface Wrapper
      Parameters:
      iface - the class
      Returns:
      whether or not the interface is assignable from this class
      Throws:
      SQLException
    • getParentLogger

      public Logger getParentLogger()
      [Not supported]
      Specified by:
      getParentLogger in interface CommonDataSource