- 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.WrapperA fast connection pool.HSQLDB-Specific Information:
A connection pool for HyperSQL connections. This implementation ofDataSourceis dedicated to HyperSQL and guarantees all connection states are automatically reset when a connection is reused.The methods of the parent class,
JDBCCommonDataSourceare 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 voidclose(int wait)Closes the pool immediately.voidconnectionClosed(javax.sql.ConnectionEvent event)voidconnectionErrorOccurred(javax.sql.ConnectionEvent event)java.sql.ConnectiongetConnection()Retrieves a new connection using the properties that have already been set.java.sql.ConnectiongetConnection(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.StringgetDatabase()Synonym for getUrl().java.lang.StringgetDatabaseName()Synonym for getUrl().java.lang.StringgetDataSourceName()Retrieves the name of the data source.java.lang.StringgetDescription()Retrieves the description of the data source.intgetLoginTimeout()Gets the maximum time in seconds that this data source can wait while attempting to connect to a database.java.io.PrintWritergetLogWriter()Retrieves the log writer for thisDataSourceobject.java.util.logging.LoggergetParentLogger()Return the parent Logger of all the Loggers used by this data source.javax.naming.ReferencegetReference()Retrieves the Reference of this object.java.lang.StringgetUrl()Retrieves the jdbc database connection url attribute.java.lang.StringgetURL()Retrieves the jdbc database connection url attribute.java.lang.StringgetUser()Retrieves the user name for the connection.booleanisWrapperFor(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.voidsetDatabase(java.lang.String database)Synonym for setUrl(String).voidsetDatabaseName(java.lang.String databaseName)Synonym for setUrl(String).voidsetLoginTimeout(int seconds)Sets the maximum time in seconds that this data source will wait while attempting to connect to a database.voidsetLogWriter(java.io.PrintWriter out)Sets the log writer for thisDataSourceobject to the givenjava.io.PrintWriterobject.voidsetPassword(java.lang.String password)Sets the password for the username.voidsetProperties(java.util.Properties props)Sets connection properties.voidsetUrl(java.lang.String url)Sets the jdbc database URL.voidsetURL(java.lang.String url)Sets the jdbc database URL.voidsetUser(java.lang.String user)Sets the user name.voidstatementClosed(javax.sql.StatementEvent event)voidstatementErrorOccurred(javax.sql.StatementEvent event)<T> Tunwrap(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.SQLExceptionRetrieves a new connection using the properties that have already been set.- Specified by:
getConnectionin 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.SQLExceptionRetrieves 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:
getConnectionin 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.SQLExceptionReturns 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 callingunwraprecursively on the wrapped object or a proxy for that result. If the receiver is not a wrapper and does not implement the interface, then anSQLExceptionis thrown.- Specified by:
unwrapin 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.SQLExceptionReturns 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 callingisWrapperForon 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 tounwrapso that callers can use this method to avoid expensiveunwrapcalls that may fail. If this method returns true then callingunwrapwith the same argument should succeed.- Specified by:
isWrapperForin 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.NamingExceptionRetrieves the Reference of this object.- Specified by:
getReferencein 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:
connectionClosedin interfacejavax.sql.ConnectionEventListener
-
connectionErrorOccurred
public void connectionErrorOccurred(javax.sql.ConnectionEvent event)
- Specified by:
connectionErrorOccurredin interfacejavax.sql.ConnectionEventListener
-
statementClosed
public void statementClosed(javax.sql.StatementEvent event)
- Specified by:
statementClosedin interfacejavax.sql.StatementEventListener
-
statementErrorOccurred
public void statementErrorOccurred(javax.sql.StatementEvent event)
- Specified by:
statementErrorOccurredin interfacejavax.sql.StatementEventListener
-
getLogWriter
public java.io.PrintWriter getLogWriter() throws java.sql.SQLExceptionRetrieves the log writer for this
DataSourceobject.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.DriverManagerclass. When aDataSourceobject is created, the log writer is initially null; in other words, the default is for logging to be disabled.- Specified by:
getLogWriterin interfacejavax.sql.CommonDataSource- Specified by:
getLogWriterin 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.SQLExceptionSets the log writer for this
DataSourceobject to the givenjava.io.PrintWriterobject.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.DriverManagerclass. When aDataSourceobject is created the log writer is initially null; in other words, the default is for logging to be disabled.- Specified by:
setLogWriterin interfacejavax.sql.CommonDataSource- Specified by:
setLogWriterin 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.SQLExceptionSets 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
DataSourceobject is created, the login timeout is initially zero.- Specified by:
setLoginTimeoutin interfacejavax.sql.CommonDataSource- Specified by:
setLoginTimeoutin 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.SQLExceptionGets 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 aDataSourceobject is created, the login timeout is initially zero.- Specified by:
getLoginTimeoutin interfacejavax.sql.CommonDataSource- Specified by:
getLoginTimeoutin 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.SQLFeatureNotSupportedExceptionReturn 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:
getParentLoggerin 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.SQLExceptionCloses 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
-
-