Class JNDIConnectionPool

java.lang.Object
org.apache.xalan.lib.sql.JNDIConnectionPool
All Implemented Interfaces:
ConnectionPool

public class JNDIConnectionPool extends 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
    Description
    Use of the default constructor requires the jndi path to be set via setJndiPath().
    JNDIConnectionPool(String jndiDatasourcePath)
    Creates a connection pool with a specified JNDI path.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Intended to release unused connections from the pool.
    Returns a connection from the JDNI DataSource found at the JNDI Datasource path.
    Returns the path for the jndi datasource
    boolean
    Always returns false, indicating that this wrapper has no idea of what connections the underlying JNDI source is maintaining.
    boolean
    Always returns true.
    void
    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
    Provide a mechinism to return a connection to the pool on Error.
    void
    Not implemented and will throw an Error if called.
    void
    setJndiPath(String jndiPath)
    Sets the path for the jndi datasource
    void
    Ignored in this implementation b/c the pooling is determined by the jndi dataosource.
    void
    Sets the password for the connection.
    void
    setPoolEnabled(boolean flag)
    Releases the reference to the jndi datasource.
    void
    Ignored in this implementation b/c the pooling is determined by the jndi dataosource.
    void
    Not implemented and will throw an Error if called.
    void
    Sets the user name for the connection.
    boolean
    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 Details

    • JNDIConnectionPool

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

      public JNDIConnectionPool(String jndiDatasourcePath)
      Creates a connection pool with a specified JNDI path.
      Parameters:
      jndiDatasourcePath - Complete path to the JNDI datasource
  • Method Details

    • setJndiPath

      public void setJndiPath(String jndiPath)
      Sets the path for the jndi datasource
      Parameters:
      jndiPath -
    • getJndiPath

      public 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(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(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(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(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 Connection getConnection() throws SQLException
      Returns a connection from the JDNI DataSource found at the JNDI Datasource path.
      Specified by:
      getConnection in interface ConnectionPool
      Returns:
      Throws:
      SQLException
    • releaseConnection

      public void releaseConnection(Connection con) throws 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:
      SQLException
    • releaseConnectionOnError

      public void releaseConnectionOnError(Connection con) throws 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:
      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(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