Package 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 byXConnection
when it attempts to resolves aConnectionPool
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 callXConnection.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 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 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 datasourceboolean
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 connectionsvoid
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 datasourcevoid
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.
-
-
-
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 interfaceConnectionPool
- 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 interfaceConnectionPool
- 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 interfaceConnectionPool
- Parameters:
d
-
-
freeUnused
public void freeUnused()
Intended to release unused connections from the pool. Does nothing in this implementation.- Specified by:
freeUnused
in interfaceConnectionPool
-
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 interfaceConnectionPool
- 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 interfaceConnectionPool
- 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 interfaceConnectionPool
- 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 interfaceConnectionPool
- 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 interfaceConnectionPool
- 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 interfaceConnectionPool
- 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 interfaceConnectionPool
- 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 interfaceConnectionPool
- 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 interfaceConnectionPool
- 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 interfaceConnectionPool
-
-