Class OracleOCIConnectionPool

  • All Implemented Interfaces:
    java.beans.PropertyChangeListener, java.io.Serializable, java.sql.Wrapper, java.util.EventListener, javax.naming.Referenceable, javax.sql.CommonDataSource, javax.sql.DataSource, OracleCommonDataSource, OracleDataSource, oracle.jdbc.diagnostics.Diagnosable, oracle.jdbc.internal.Monitor, oracle.jdbc.replay.internal.OracleDataSource, OracleDataSource

    public class OracleOCIConnectionPool
    extends OracleDataSource
    A type-2 driver connection pool.
    See Also:
    Serialized Form
    • Field Detail

      • m_connection_pool

        public oracle.jdbc.oci.OracleOCIConnection m_connection_pool
      • IS_CONNECTION_POOLING

        public static final java.lang.String IS_CONNECTION_POOLING
        See Also:
        Constant Field Values
      • CONNPOOL_LOGON_MODE

        public static final java.lang.String CONNPOOL_LOGON_MODE
        See Also:
        Constant Field Values
      • CONNPOOL_CONNECTION

        public static final java.lang.String CONNPOOL_CONNECTION
        See Also:
        Constant Field Values
      • CONNPOOL_PROXY_CONNECTION

        public static final java.lang.String CONNPOOL_PROXY_CONNECTION
        See Also:
        Constant Field Values
      • CONNPOOL_ALIASED_CONNECTION

        public static final java.lang.String CONNPOOL_ALIASED_CONNECTION
        See Also:
        Constant Field Values
      • PROXY_DISTINGUISHED_NAME

        public static final java.lang.String PROXY_DISTINGUISHED_NAME
        See Also:
        Constant Field Values
      • PROXY_CERTIFICATE

        public static final java.lang.String PROXY_CERTIFICATE
        See Also:
        Constant Field Values
      • PROXYTYPE_USER_NAME

        public static final java.lang.String PROXYTYPE_USER_NAME
        See Also:
        Constant Field Values
      • PROXYTYPE_DISTINGUISHED_NAME

        public static final java.lang.String PROXYTYPE_DISTINGUISHED_NAME
        See Also:
        Constant Field Values
      • PROXYTYPE_CERTIFICATE

        public static final java.lang.String PROXYTYPE_CERTIFICATE
        See Also:
        Constant Field Values
      • CONNPOOL_MIN_LIMIT

        public static final java.lang.String CONNPOOL_MIN_LIMIT
        See Also:
        Constant Field Values
      • CONNPOOL_MAX_LIMIT

        public static final java.lang.String CONNPOOL_MAX_LIMIT
        See Also:
        Constant Field Values
      • CONNPOOL_INCREMENT

        public static final java.lang.String CONNPOOL_INCREMENT
        See Also:
        Constant Field Values
      • CONNPOOL_ACTIVE_SIZE

        public static final java.lang.String CONNPOOL_ACTIVE_SIZE
        See Also:
        Constant Field Values
      • CONNPOOL_POOL_SIZE

        public static final java.lang.String CONNPOOL_POOL_SIZE
        See Also:
        Constant Field Values
      • CONNPOOL_TIMEOUT

        public static final java.lang.String CONNPOOL_TIMEOUT
        See Also:
        Constant Field Values
      • CONNPOOL_IS_POOLCREATED

        public static final java.lang.String CONNPOOL_IS_POOLCREATED
        See Also:
        Constant Field Values
      • TRANSACTIONS_DISTRIBUTED

        public static final java.lang.String TRANSACTIONS_DISTRIBUTED
        See Also:
        Constant Field Values
      • m_stmtCacheSize

        protected int m_stmtCacheSize
      • m_stmtClearMetaData

        protected boolean m_stmtClearMetaData
    • Constructor Detail

      • OracleOCIConnectionPool

        public OracleOCIConnectionPool​(java.lang.String us,
                                       java.lang.String p,
                                       java.lang.String url,
                                       java.util.Properties info)
                                throws java.sql.SQLException
        Notes: Choose an userid and password that can act as proxy for the users in the getProxyConnection() method.
        Parameters:
        us - ConnectionPool user-id.
        p - ConnectionPool password
        url - This would be the full url including the database name. The database name would be the logical name of the pool.
        info - Set of properties (optional) for specifying the pool configuration.
        Throws:
        java.sql.SQLException
      • OracleOCIConnectionPool

        public OracleOCIConnectionPool​(java.lang.String us,
                                       java.lang.String p,
                                       java.lang.String url)
                                throws java.sql.SQLException
        Deprecated.
        Throws:
        java.sql.SQLException
      • OracleOCIConnectionPool

        public OracleOCIConnectionPool()
                                throws java.sql.SQLException
        This will use the user-id, password and connection pool name values set using the methods setUser, setPassword, setConnectionPoolName.

        Notes: No useful operations (like getConnection) can be performed on this class unless the methods setUser, setPassword, setConnectionPoolName are invoked. Choose an userid and password that can act as proxy for the users in the getProxyConnection() method.

        Throws:
        java.sql.SQLException
    • Method Detail

      • getConnection

        public java.sql.Connection getConnection()
                                          throws java.sql.SQLException
        Description copied from class: OracleDataSource

        Attempt to establish a database connection.

        Specified by:
        getConnection in interface javax.sql.DataSource
        Overrides:
        getConnection in class OracleDataSource
        Returns:
        a Connection to the database
        Throws:
        java.sql.SQLException - if a database-access error occurs.
      • getConnection

        public java.sql.Connection getConnection​(java.lang.String us,
                                                 java.lang.String p)
                                          throws java.sql.SQLException
        For getting a connection to the database.
        Specified by:
        getConnection in interface javax.sql.DataSource
        Overrides:
        getConnection in class OracleDataSource
        Parameters:
        us - Connection user-id
        p - Connection password
        Returns:
        a Connection to the database
        Throws:
        java.sql.SQLException - if a database-access error occurs.
      • getReference

        public javax.naming.Reference getReference()
                                            throws javax.naming.NamingException
        Inherited from referencable
        Specified by:
        getReference in interface javax.naming.Referenceable
        Overrides:
        getReference in class OracleDataSource
        Returns:
        Returns a reference to this OracleOCIConnectionPool instance
        Throws:
        javax.naming.NamingException
      • getProxyConnection

        public oracle.jdbc.internal.OracleConnection getProxyConnection​(java.lang.String proxytype,
                                                                        java.util.Properties prop)
                                                                 throws java.sql.SQLException
        For creating a proxy connection.

        Notes: The user and password used to create OracleOCIConnectionPool() must be allowed to act as proxy for user 'us'.

        Parameters:
        proxytype - Can be one of following types OracleOCIConnectionPool.PROXYCONNECTION_USER_NAME - This will be the normal mode of specifying the username in proxyUser OracleOCIConnectionPool.PROXYCONNECTION_DISTINGUISHED_NAME - This will specify the distinguished name of the user in proxyUser OracleOCIConnectionPool.PROXYCONNECTION_CERTIFICATE - This will specify the proxy certificate in proxyUser
        proxyUser - The user, or certificate, to be proxied against.
        roles - Set of roles which this proxy connection can use
        Returns:
        connection object
        Throws:
        java.sql.SQLException
      • getAliasedConnection

        public oracle.jdbc.internal.OracleConnection getAliasedConnection​(byte[] conId)
                                                                   throws java.sql.SQLException
        For creating aliased sessions.

        Notes: Once this call is issued, this connection object can't be used for any operation, as the intent for connection cloning is failover.

        Parameters:
        conId - - byte[] of the connection id
        Throws:
        java.sql.SQLException
      • close

        public void close()
                   throws java.sql.SQLException
        This will destroy the connection pool, and close all the connections opened from this data source. Hence, all the statement objects created from these connection objects will also be closed.
        Throws:
        java.sql.SQLException
      • setPoolConfig

        public void setPoolConfig​(java.util.Properties prop)
                           throws java.sql.SQLException
        (Re-)Set the pool configuration for the Cache. Note: We will not be exposing set for individual settings of the pool's configuration. Users will have to call setPoolConfig with min, max & increment in order for the pool's configuration to be changed.
        Parameters:
        prop -
        Throws:
        java.sql.SQLException
      • readPoolConfig

        public static void readPoolConfig​(int minLimit,
                                          int maxLimit,
                                          int increment,
                                          int timeout,
                                          boolean nowait,
                                          boolean transactionsDistributed,
                                          int[] p)
        read the properties into an integer array
      • readPoolConfig

        public static void readPoolConfig​(java.util.Properties info,
                                          int[] p)
      • getPoolConfig

        public java.util.Properties getPoolConfig()
                                           throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getActiveSize

        public int getActiveSize()
                          throws java.sql.SQLException
        Return the number of active or busy connections in the connection pool Note that the count cannot be guaranteed on any invoking subsequent OracleOCIConnectionCacheImpl method. This should be used only as estimate and perhaps for statistical analysis.
        Returns:
        Throws:
        java.sql.SQLException
      • getPoolSize

        public int getPoolSize()
                        throws java.sql.SQLException
        Return the number of physical connections in the connection pool Note that the count cannot be guaranteed on any invoking subsequent OracleOCIConnectionCacheImpl method. This should be used only as estimate and perhaps for statistical analysis.
        Returns:
        Throws:
        java.sql.SQLException
      • getTimeout

        public int getTimeout()
                       throws java.sql.SQLException
        Return the timeout The connections idle for more than this time (seconds) are terminated periodically, to maintain optimum number of open connections.This attribute can be set dynamically. If this attribute is not set, the connections are never timed out.
        Returns:
        Throws:
        java.sql.SQLException
      • getNoWait

        public java.lang.String getNoWait()
                                   throws java.sql.SQLException
        Return the connection No-wait parameter This attribute determines if retrial for a connection has to be done when all connections in the pool are found to be busy and the number of connections already reached max. If this attribute is set, an error is thrown when all the connections are busy and no more connections can be opened. Otherwise, the call waits till it gets a connection.
        Returns:
        Throws:
        java.sql.SQLException
      • getMinLimit

        public int getMinLimit()
                        throws java.sql.SQLException
        Note: There are no individual setMin, setMax and setIncrement since that needs to be done in one call to setPoolConfig Return the minimum limit on the no of Connections.
        Returns:
        minimum limit on the no of Connections.
        Throws:
        java.sql.SQLException
      • getMaxLimit

        public int getMaxLimit()
                        throws java.sql.SQLException
        Return the Max limit on Connections.
        Returns:
        int Max no of Connections that can be opened.
        Throws:
        java.sql.SQLException
      • getConnectionIncrement

        public int getConnectionIncrement()
                                   throws java.sql.SQLException
        Return the Increment for increasing the connections for the Cache.
        Returns:
        int Increment
        Throws:
        java.sql.SQLException
      • isDistributedTransEnabled

        public boolean isDistributedTransEnabled()
      • isPoolCreated

        public boolean isPoolCreated()
        check if the pool has been created. This occurs when is called with user/password or getConnection() has been called
      • connectionClosed

        public void connectionClosed​(oracle.jdbc.oci.OracleOCIConnection conn)
                              throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • setStmtCacheSize

        public void setStmtCacheSize​(int size)
                              throws java.sql.SQLException
        Set the statement cache size. Default is 0. You cannot set this for logicalhandles obtained from this pool. If more than size cursors are already cached than they will be closed. By default, the metadata of the cursor will be saved. Only data and the state will be cleared. You need to call this first to enable either type of Statement caching. When both types of Statement caching are enabled, the size is the total number of cursors cached for both the schemes together.
        Parameters:
        size - Size of the Cache
        Throws:
        java.sql.SQLException
      • setStmtCacheSize

        public void setStmtCacheSize​(int size,
                                     boolean clearMetaData)
                              throws java.sql.SQLException
        Set the statement cache size. Default is 0. You cannot set this for logicalhandles obtained from this pool. If more than size cursors are already cached than they will be closed. By default, the meta data of the cursor will be saved. But if clearMetaData is set to true, even that will be cleared. You need to call this first to enable either type of Statement caching. When both types of Statement caching are enabled, the size is the total number of cursors cached for both the schemes together.
        Parameters:
        size - Size of the Cache
        clearMetaData - Whether the state has to be cleared or not
        Throws:
        java.sql.SQLException
      • getStmtCacheSize

        public int getStmtCacheSize()
        Return the size of Statement Cache.
        Returns:
        int Size of Statement Cache. If not set, the default 0 is returned.
      • isStmtCacheEnabled

        public boolean isStmtCacheEnabled()
        Check whether Statement Caching is enabled for this pool or Not.