org.apache.xalan.lib.sql

## Class JNDIConnectionPool

- java.lang.Object
- - org.apache.xalan.lib.sql.JNDIConnectionPool

- All Implemented Interfaces:
    ConnectionPool

      public class JNDIConnectionPool
      extends java.lang.Object
      implements ConnectionPool

  A Connection Pool that wraps a JDBC datasource to provide connections. An instance of this class is created by `XConnection` when it attempts to resolves a `ConnectionPool` name as a JNDI data source. Most methods in this implementation do nothing since configuration is handled by the underlying JDBC datasource. Users should always call `XConnection.close()` from their stylsheet to explicitely close their connection. However, since there is no way to enforce this (Yikes!), it is recommended that a relatively short datasource timeout be used to prevent dangling connections.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `JNDIConnectionPool()` Use of the default constructor requires the jndi path to be set via setJndiPath().
    `JNDIConnectionPool(java.lang.String jndiDatasourcePath)` Creates a connection pool with a specified JNDI path.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `freeUnused()` Intended to release unused connections from the pool.
    `java.sql.Connection` | `getConnection()` Returns a connection from the JDNI DataSource found at the JNDI Datasource path.
    `java.lang.String` | `getJndiPath()` Returns the path for the jndi datasource
    `boolean` | `hasActiveConnections()` Always returns false, indicating that this wrapper has no idea of what connections the underlying JNDI source is maintaining.
    `boolean` | `isEnabled()` Always returns true.
    `void` | `releaseConnection(java.sql.Connection con)` Return a connection to the pool, the connection may be closed if the pool is inactive or has exceeded the max number of free connections
    `void` | `releaseConnectionOnError(java.sql.Connection con)` Provide a mechinism to return a connection to the pool on Error.
    `void` | `setDriver(java.lang.String d)` Not implemented and will throw an Error if called.
    `void` | `setJndiPath(java.lang.String jndiPath)` Sets the path for the jndi datasource
    `void` | `setMinConnections(int n)` Ignored in this implementation b/c the pooling is determined by the jndi dataosource.
    `void` | `setPassword(java.lang.String p)` Sets the password for the connection.
    `void` | `setPoolEnabled(boolean flag)` Releases the reference to the jndi datasource.
    `void` | `setProtocol(java.util.Properties p)` Ignored in this implementation b/c the pooling is determined by the jndi dataosource.
    `void` | `setURL(java.lang.String url)` Not implemented and will throw an Error if called.
    `void` | `setUser(java.lang.String u)` Sets the user name for the connection.
    `boolean` | `testConnection()` A simple test to see if the jndi datasource exists.

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

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

- - ### Constructor Detail

    - #### JNDIConnectionPool

          public JNDIConnectionPool()

      Use of the default constructor requires the jndi path to be set via setJndiPath().

    - #### JNDIConnectionPool

          public JNDIConnectionPool(java.lang.String jndiDatasourcePath)

      Creates a connection pool with a specified JNDI path.
      Parameters:
        `jndiDatasourcePath` - Complete path to the JNDI datasource

  - ### Method Detail

    - #### setJndiPath

          public void setJndiPath(java.lang.String jndiPath)

      Sets the path for the jndi datasource
      Parameters:
        `jndiPath` -

    - #### getJndiPath

          public java.lang.String getJndiPath()

      Returns the path for the jndi datasource
      Parameters:
        `jndiPath` -

    - #### isEnabled

          public boolean isEnabled()

      Always returns true. This method was intended to indicate if the pool was enabled, however, in this implementation that is not relavant.
      Specified by:
        `isEnabled` in interface `ConnectionPool`
      Returns:

    - #### setDriver

          public void setDriver(java.lang.String d)

      Not implemented and will throw an Error if called. Connection configuration is handled by the underlying JNDI DataSource.
      Specified by:
        `setDriver` in interface `ConnectionPool`
      Parameters:
        `d` -

    - #### setURL

          public void setURL(java.lang.String url)

      Not implemented and will throw an Error if called. Connection configuration is handled by the underlying JNDI DataSource.
      Specified by:
        `setURL` in interface `ConnectionPool`
      Parameters:
        `d` -

    - #### freeUnused

          public void freeUnused()

      Intended to release unused connections from the pool. Does nothing in this implementation.
      Specified by:
        `freeUnused` in interface `ConnectionPool`

    - #### hasActiveConnections

          public boolean hasActiveConnections()

      Always returns false, indicating that this wrapper has no idea of what connections the underlying JNDI source is maintaining.
      Specified by:
        `hasActiveConnections` in interface `ConnectionPool`
      Returns:

    - #### setPassword

          public void setPassword(java.lang.String p)

      Sets the password for the connection. If the jndi datasource does not require a password (which is typical), this can be left null.
      Specified by:
        `setPassword` in interface `ConnectionPool`
      Parameters:
        `p` - the password

    - #### setUser

          public void setUser(java.lang.String u)

      Sets the user name for the connection. If the jndi datasource does not require a user name (which is typical), this can be left null.
      Specified by:
        `setUser` in interface `ConnectionPool`
      Parameters:
        `u` - the user name

    - #### getConnection

          public java.sql.Connection getConnection()
                                            throws java.sql.SQLException

      Returns a connection from the JDNI DataSource found at the JNDI Datasource path.
      Specified by:
        `getConnection` in interface `ConnectionPool`
      Returns:
      Throws:
        `java.sql.SQLException`

    - #### releaseConnection

          public void releaseConnection(java.sql.Connection con)
                                 throws java.sql.SQLException

      Description copied from interface: `ConnectionPool`
      Return a connection to the pool, the connection may be closed if the pool is inactive or has exceeded the max number of free connections
      Specified by:
        `releaseConnection` in interface `ConnectionPool`
      Throws:
        `java.sql.SQLException`

    - #### releaseConnectionOnError

          public void releaseConnectionOnError(java.sql.Connection con)
                                        throws java.sql.SQLException

      Description copied from interface: `ConnectionPool`
      Provide a mechinism to return a connection to the pool on Error. A good default behaviour is to close this connection and build a new one to replace it. Some JDBC impl's won't allow you to reuse a connection after an error occurs.
      Specified by:
        `releaseConnectionOnError` in interface `ConnectionPool`
      Throws:
        `java.sql.SQLException`

    - #### setPoolEnabled

          public void setPoolEnabled(boolean flag)

      Releases the reference to the jndi datasource. The original intention of this method was to actually turn the pool *off*. Since we are not managing the pool, we simply release our reference to the datasource. Future calls to the getConnection will simply recreate the datasource.
      Specified by:
        `setPoolEnabled` in interface `ConnectionPool`
      Parameters:
        `flag` - If false, the reference to the datasource is released.

    - #### setProtocol

          public void setProtocol(java.util.Properties p)

      Ignored in this implementation b/c the pooling is determined by the jndi dataosource.
      Specified by:
        `setProtocol` in interface `ConnectionPool`
      Parameters:
        `p` -

    - #### setMinConnections

          public void setMinConnections(int n)

      Ignored in this implementation b/c the pooling is determined by the jndi dataosource.
      Specified by:
        `setMinConnections` in interface `ConnectionPool`
      Parameters:
        `n` -

    - #### testConnection

          public boolean testConnection()

      A simple test to see if the jndi datasource exists. Note that this test does not ensure that the datasource will return valid connections.
      Specified by:
        `testConnection` in interface `ConnectionPool`

Copyright © 2023 Apache XML Project. All Rights Reserved.