- java.lang.Object
-
- org.hsqldb.jdbc.JDBCPool
-
- All Implemented Interfaces:
java.sql.Wrapper
,java.util.EventListener
,javax.naming.Referenceable
,javax.sql.CommonDataSource
,javax.sql.ConnectionEventListener
,javax.sql.DataSource
,javax.sql.StatementEventListener
public class JDBCPool extends java.lang.Object implements javax.sql.DataSource, javax.naming.Referenceable, javax.sql.ConnectionEventListener, javax.sql.StatementEventListener, java.sql.Wrapper
A fast connection pool.HSQLDB-Specific Information:
A connection pool for HyperSQL connections. This implementation ofDataSource
is dedicated to HyperSQL and guarantees all connection states are automatically reset when a connection is reused.The methods of the parent class,
JDBCCommonDataSource
are used to specify the database URL, user, password, and / or connection properties.- Since:
- HSQLDB 2.2.9
- Author:
- Fred Toussi (fredt@users dot sourceforge.net)
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close(int wait)
Closes the pool immediately.void
connectionClosed(javax.sql.ConnectionEvent event)
void
connectionErrorOccurred(javax.sql.ConnectionEvent event)
java.sql.Connection
getConnection()
Retrieves a new connection using the properties that have already been set.java.sql.Connection
getConnection(java.lang.String username, java.lang.String password)
Retrieves a new connection using the given username and password, and the database url that has been set.java.lang.String
getDatabase()
Synonym for getUrl().java.lang.String
getDatabaseName()
Synonym for getUrl().java.lang.String
getDataSourceName()
Retrieves the name of the data source.java.lang.String
getDescription()
Retrieves the description of the data source.int
getLoginTimeout()
Gets the maximum time in seconds that this data source can wait while attempting to connect to a database.java.io.PrintWriter
getLogWriter()
Retrieves the log writer for thisDataSource
object.java.util.logging.Logger
getParentLogger()
Return the parent Logger of all the Loggers used by this data source.javax.naming.Reference
getReference()
Retrieves the Reference of this object.java.lang.String
getUrl()
Retrieves the jdbc database connection url attribute.java.lang.String
getURL()
Retrieves the jdbc database connection url attribute.java.lang.String
getUser()
Retrieves the user name for the connection.boolean
isWrapperFor(java.lang.Class<?> iface)
Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does.void
setDatabase(java.lang.String database)
Synonym for setUrl(String).void
setDatabaseName(java.lang.String databaseName)
Synonym for setUrl(String).void
setLoginTimeout(int seconds)
Sets the maximum time in seconds that this data source will wait while attempting to connect to a database.void
setLogWriter(java.io.PrintWriter out)
Sets the log writer for thisDataSource
object to the givenjava.io.PrintWriter
object.void
setPassword(java.lang.String password)
Sets the password for the username.void
setProperties(java.util.Properties props)
Sets connection properties.void
setUrl(java.lang.String url)
Sets the jdbc database URL.void
setURL(java.lang.String url)
Sets the jdbc database URL.void
setUser(java.lang.String user)
Sets the user name.void
statementClosed(javax.sql.StatementEvent event)
void
statementErrorOccurred(javax.sql.StatementEvent event)
<T> T
unwrap(java.lang.Class<T> iface)
Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy.
-
-
-
Constructor Detail
-
JDBCPool
public JDBCPool()
Creates a connection pool with the maximum size of 8. The database and connection settings are made before thegetConnection()
is called.
-
JDBCPool
public JDBCPool(int size)
Creates a connection pool with the given maximum size. The database and connection settings are made before thegetConnection()
is called.- Parameters:
size
- int maximum size of the pool
-
-
Method Detail
-
getConnection
public java.sql.Connection getConnection() throws java.sql.SQLException
Retrieves a new connection using the properties that have already been set.- Specified by:
getConnection
in interfacejavax.sql.DataSource
- Returns:
- a connection to the data source
- Throws:
java.sql.SQLException
- if a database access error occurs
-
getConnection
public java.sql.Connection getConnection(java.lang.String username, java.lang.String password) throws java.sql.SQLException
Retrieves a new connection using the given username and password, and the database url that has been set. No other properties are used for the connection. This method can be used only with the same username and password used for the connection pool. The first call to this method sets the user name and password for the connection pool.- Specified by:
getConnection
in interfacejavax.sql.DataSource
- Parameters:
username
- the database user on whose behalf the connection is being madepassword
- the user's password- Returns:
- a connection to the data source
- Throws:
java.sql.SQLException
- if a database access error occurs
-
unwrap
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException
Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy. If the receiver implements the interface then the result is the receiver or a proxy for the receiver. If the receiver is a wrapper and the wrapped object implements the interface then the result is the wrapped object or a proxy for the wrapped object. Otherwise return the result of callingunwrap
recursively on the wrapped object or a proxy for that result. If the receiver is not a wrapper and does not implement the interface, then anSQLException
is thrown.- Specified by:
unwrap
in interfacejava.sql.Wrapper
- Parameters:
iface
- A Class defining an interface that the result must implement.- Returns:
- an object that implements the interface. May be a proxy for the actual implementing object.
- Throws:
java.sql.SQLException
- If no object found that implements the interface- Since:
- JDK 1.6, HSQLDB 2.0
-
isWrapperFor
public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException
Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does. Returns false otherwise. If this implements the interface then return true, else if this is a wrapper then return the result of recursively callingisWrapperFor
on the wrapped object. If this does not implement the interface and is not a wrapper, return false. This method should be implemented as a low-cost operation compared tounwrap
so that callers can use this method to avoid expensiveunwrap
calls that may fail. If this method returns true then callingunwrap
with the same argument should succeed.- Specified by:
isWrapperFor
in interfacejava.sql.Wrapper
- Parameters:
iface
- a Class defining an interface.- Returns:
- true if this implements the interface or directly or indirectly wraps an object that does.
- Throws:
java.sql.SQLException
- if an error occurs while determining whether this is a wrapper for an object with the given interface.- Since:
- JDK 1.6, HSQLDB 2.0
-
getReference
public javax.naming.Reference getReference() throws javax.naming.NamingException
Retrieves the Reference of this object.- Specified by:
getReference
in interfacejavax.naming.Referenceable
- Returns:
- The non-null Reference of this object.
- Throws:
javax.naming.NamingException
- If a naming exception was encountered while retrieving the reference.
-
connectionClosed
public void connectionClosed(javax.sql.ConnectionEvent event)
- Specified by:
connectionClosed
in interfacejavax.sql.ConnectionEventListener
-
connectionErrorOccurred
public void connectionErrorOccurred(javax.sql.ConnectionEvent event)
- Specified by:
connectionErrorOccurred
in interfacejavax.sql.ConnectionEventListener
-
statementClosed
public void statementClosed(javax.sql.StatementEvent event)
- Specified by:
statementClosed
in interfacejavax.sql.StatementEventListener
-
statementErrorOccurred
public void statementErrorOccurred(javax.sql.StatementEvent event)
- Specified by:
statementErrorOccurred
in interfacejavax.sql.StatementEventListener
-
getLogWriter
public java.io.PrintWriter getLogWriter() throws java.sql.SQLException
Retrieves the log writer for this
DataSource
object.The log writer is a character output stream to which all logging and tracing messages for this data source will be printed. This includes messages printed by the methods of this object, messages printed by methods of other objects manufactured by this object, and so on. Messages printed to a data source specific log writer are not printed to the log writer associated with the
java.sql.DriverManager
class. When aDataSource
object is created, the log writer is initially null; in other words, the default is for logging to be disabled.- Specified by:
getLogWriter
in interfacejavax.sql.CommonDataSource
- Specified by:
getLogWriter
in interfacejavax.sql.DataSource
- Returns:
- the log writer for this data source or null if logging is disabled
- Throws:
java.sql.SQLException
- if a database access error occurs- Since:
- 1.4
- See Also:
setLogWriter(java.io.PrintWriter)
-
setLogWriter
public void setLogWriter(java.io.PrintWriter out) throws java.sql.SQLException
Sets the log writer for this
DataSource
object to the givenjava.io.PrintWriter
object.The log writer is a character output stream to which all logging and tracing messages for this data source will be printed. This includes messages printed by the methods of this object, messages printed by methods of other objects manufactured by this object, and so on. Messages printed to a data source- specific log writer are not printed to the log writer associated with the
java.sql.DriverManager
class. When aDataSource
object is created the log writer is initially null; in other words, the default is for logging to be disabled.- Specified by:
setLogWriter
in interfacejavax.sql.CommonDataSource
- Specified by:
setLogWriter
in interfacejavax.sql.DataSource
- Parameters:
out
- the new log writer; to disable logging, set to null- Throws:
java.sql.SQLException
- if a database access error occurs- Since:
- 1.4
- See Also:
getLogWriter()
-
setLoginTimeout
public void setLoginTimeout(int seconds) throws java.sql.SQLException
Sets the maximum time in seconds that this data source will wait while attempting to connect to a database. A value of zero specifies that the timeout is the default system timeout if there is one; otherwise, it specifies that there is no timeout. When a
DataSource
object is created, the login timeout is initially zero.- Specified by:
setLoginTimeout
in interfacejavax.sql.CommonDataSource
- Specified by:
setLoginTimeout
in interfacejavax.sql.DataSource
- Parameters:
seconds
- the data source login time limit- Throws:
java.sql.SQLException
- if a database access error occurs.- Since:
- 1.4
- See Also:
getLoginTimeout()
-
getLoginTimeout
public int getLoginTimeout() throws java.sql.SQLException
Gets the maximum time in seconds that this data source can wait while attempting to connect to a database. A value of zero means that the timeout is the default system timeout if there is one; otherwise, it means that there is no timeout. When aDataSource
object is created, the login timeout is initially zero.- Specified by:
getLoginTimeout
in interfacejavax.sql.CommonDataSource
- Specified by:
getLoginTimeout
in interfacejavax.sql.DataSource
- Returns:
- the data source login time limit
- Throws:
java.sql.SQLException
- if a database access error occurs.- Since:
- 1.4
- See Also:
setLoginTimeout(int)
-
getDescription
public java.lang.String getDescription()
Retrieves the description of the data source.- Returns:
- the description
-
getDataSourceName
public java.lang.String getDataSourceName()
Retrieves the name of the data source.- Returns:
- the description
-
getDatabaseName
public java.lang.String getDatabaseName()
Synonym for getUrl().- Returns:
- the jdbc database connection url attribute
-
getDatabase
public java.lang.String getDatabase()
Synonym for getUrl().- Returns:
- the jdbc database connection url attribute
-
getUrl
public java.lang.String getUrl()
Retrieves the jdbc database connection url attribute.- Returns:
- the jdbc database connection url attribute
-
getURL
public java.lang.String getURL()
Retrieves the jdbc database connection url attribute.- Returns:
- the jdbc database connection url attribute
-
getUser
public java.lang.String getUser()
Retrieves the user name for the connection.- Returns:
- the username for the connection
-
setDatabaseName
public void setDatabaseName(java.lang.String databaseName)
Synonym for setUrl(String).- Parameters:
databaseName
- the new value for the attribute
-
setDatabase
public void setDatabase(java.lang.String database)
Synonym for setUrl(String).- Parameters:
database
- the new value for the attribute
-
setUrl
public void setUrl(java.lang.String url)
Sets the jdbc database URL.- Parameters:
url
- the new value of this object's jdbc database connection url attribute
-
setURL
public void setURL(java.lang.String url)
Sets the jdbc database URL.- Parameters:
url
- the new value of this object's jdbc database connection url attribute
-
setPassword
public void setPassword(java.lang.String password)
Sets the password for the username.- Parameters:
password
- the password
-
setUser
public void setUser(java.lang.String user)
Sets the user name.- Parameters:
user
- the user id
-
setProperties
public void setProperties(java.util.Properties props)
Sets connection properties. If user / password / loginTimeout has been set with one of the setXXX() methods it will be added to the Properties object.- Parameters:
props
- properties. If null, then existing properties will be cleared/replaced.
-
getParentLogger
public java.util.logging.Logger getParentLogger() throws java.sql.SQLFeatureNotSupportedException
Return the parent Logger of all the Loggers used by this data source. This should be the Logger farthest from the root Logger that is still an ancestor of all of the Loggers used by this data source. Configuring this Logger will affect all of the log messages generated by the data source. In the worst case, this may be the root Logger.- Specified by:
getParentLogger
in interfacejavax.sql.CommonDataSource
- Returns:
- the parent Logger for this data source
- Throws:
java.sql.SQLFeatureNotSupportedException
- if the data source does not usejava.util.logging
.- Since:
- JDK 1.7, HSQLDB 2.2.9
-
close
public void close(int wait) throws java.sql.SQLException
Closes the pool immediately. Waits the given number of seconds before closing all existing connections in the pool.- Parameters:
wait
- int number of seconds to wait before closing the connections, maximum 60 seconds- Throws:
java.sql.SQLException
- on any error
-
-