<!-- jdbc-connection-pool
jdbc-connection-pool defines configuration used to create and
manage a pool physical database connections. Pool definition is
named, and can be referred to by multiple jdbc-resource elements
(See <jdbc-resource>).
Each named pool definition results in a pool instantiated at server
start-up. Pool is populated when accessed for the first time. If two or
more jdbc-resource elements point to the same jdbc-connection-pool
element, they are using the same pool of connections, at run time.
children
property
Most JDBC 2.0 drivers permit use of standard property lists,
to specify User, Password and other resource configuration.
While these are optional properties, according to the
specification, several of these properties may be necessary
for most databases. See Section 5.3 of JDBC 2.0 Standard
Extension API.
The following are the names and corresponding values for these
properties
databaseName
Name of the Database
serverName
Database Server name.
port
Port where a Database server is listening for requests.
networkProtocol
Communication Protocol used.
user
default name of the database user with which connections
will be stablished. Programmatic database authentication
or default-resource-principal specified in vendor
specific web and ejb deployment descriptors will take
precedence, over this default. The details and caveats
are described in detail in the Administrator's guide.
password
password for default database user
roleName
The initial SQL role name.
datasourceName
used to name an underlying XADataSource, or
ConnectionPoolDataSource when pooling of connections is
done
description
Textual Description
When one or more of these properties are specified, they are passed as
is using set<Name>(<Value>) methods to the vendors Datasource class
(specified in datasource-classname). User and Password properties are
used as default principal, if Container Managed authentication is
specified and a default-resource-principal is not found in application
deployment descriptors.
attributes
allow-non-component-callers
A pool with this property set to true, can be used by
non-J2EE components (i.e components other than EJBs or
Servlets). The returned connection is enlisted automatically
with the transaction context obtained from the transaction
manager. This property is to enable the pool to be used by
non-component callers such as ServletFilters, Lifecycle
modules, and 3rd party persistence managers. Standard J2EE
components can continue to use such pools. Connections
obtained by non-component callers are not automatically
cleaned at the end of a transaction by the container. They
need to be explicitly closed by the the caller.
associate-with-thread
| Associate connection(s) with a thread such that when the
same thread is in need of a connection, it can reuse the
connections already associated with that thread, thereby not
incurring the overhead of getting a connection from the pool.
| Default value is false. (see also associate-with-thread-connections-count)
| associate-with-thread-connections-count
| Maximum number of connections to associate with a thread. Default
| value is 1. Takes effect only when associate-with-thread is true.
connection-creation-retry-attempts
The number of attempts to create a new connection. Default is
0, which implies no retries.
connection-creation-retry-interval-in-seconds
The time interval between retries while attempting to create
a connection. Default is 10 seconds. Effective when
connection-creation-retry-attempts is greater than 0.
connection-leak-reclaim
If enabled, connection will be reusable (put back into pool)
after connection-leak-timeout-in-seconds occurs. Default
value is false.
connection-leak-timeout-in-seconds
To aid user in detecting potential connection leaks by the
application. When a connection is not returned back to the
pool by the application within the specified period, it is
assumed to be a potential leak and stack trace of the caller
will be logged. Default is 0, which implies there is no leak
detection, by default. A positive non-zero value turns on
leak detection. Note however that, this attribute only
detects if there is a connection leak. The connection can be
reclaimed only if connection-leak-reclaim is set to true.
connection-validation-method
specifies the type of validation to be performed when
| is-connection-validation-required is true. Default value
| of this attribute is table. (see validation-table-name).The following
types of validation are supported:
auto-commit
using connection.autoCommit()
meta-data
using connection.getMetaData()
table
performing a query on a user specified table (see
validation-table-name).
| custom-validation
| validation based on user specified validation mechanism (see
| validation-classname).
datasource-classname
Name of the vendor supplied JDBC datasource resource manager.
An XA or global transactions capable datasource class will
implement javax.sql.XADatasource interface. Non XA or Local
transactions only datasources will implement
javax.sql.Datasource interface.
| driver-classname
| Name of the vendor supplied JDBC driver class name. The
| specified driver should implement the java.sql.Driver interface.
fail-all-connections
indicates if all connections in the pool must be closed
should a single validation check fail. The default is false.
One attempt will be made to re-establish failed connections.
idle-timeout-in-seconds
maximum time in seconds, that a connection can remain idle in
the pool. After this time, the pool implementation can close
this connection. Note that this does not control connection
timeouts enforced at the database server side. Adminsitrators
are advised to keep this timeout shorter than the database
server side timeout (if such timeouts are configured on the
specific vendor's database), to prevent accumulation of
unusable connection in Application Server.
| init-sql
| Used to specify a SQL string by the user, to be executed
| whenever a connection is created from the pool (not the
| connections that are reused). This is executed to initialize
| the state of the connection.
| This is an optional attribute and should carry a value when
| a initialization SQL is to be executed.
is-connection-validation-required
if true, connections are validated (checked to find out if
they are usable) before giving out to the application. The
default is false.
is-isolation-level-guaranteed
Applicable only when a particular isolation level is
specified for transaction-isolation-level. The default value
is true. This assures that every time a connection is
obtained from the pool, it is guaranteed to have the
isolation set to the desired value. This could have some
performance impact on some JDBC drivers. Can be set to false
by that administrator whefln they are certain that the
application does not change the isolation level before
returning the connection.
lazy-connection-association
Connections are lazily associated when an operation is
performed on them. Also, they are disassociated when the
transaction is completed and a component method ends, which
helps reuse of the physical connections. Default value is
false.
lazy-connection-enlistment
Enlist a resource to the transaction only when it is actually
used in a method, which avoids enlistment of connections that
are not used in a transaction. This also prevents unnecessary
enlistment of connections cached in the calling components.
Default value is false.
match-connections
To switch on/off connection matching for the pool. It can be
set to false if the administrator knows that the connections
in the pool will always be homogeneous and hence a connection
picked from the pool need not be matched by the resource
adapter. Default value is false.
max-connection-usage-count
When specified, connections will be re-used by the pool for
the specified number of times after which it will be closed.
This is useful for instance, to avoid statement-leaks.
Default value is 0, which implies the feature is not enabled.
max-pool-size
maximum number of conections that can be created
max-wait-time-in-millis
amount of time the caller will wait before getting a
connection timeout. The default is 60 seconds. A value of 0
will force caller to wait indefinitely.
name
unique name of the pool definition.
non-transactional-connections
A pool with this property set to true returns
non-transactional connections. This connection does not get
automatically enlisted with the transaction manager.
| ping
| A pool with this attribute set to true is pinged during the pool
| creation or reconfiguration to identify and warn of any erroneous
| values for the its attributes. Default value of this attribute
| is false.
pool-resize-quantity
number of connections to be removed when
idle-timeout-in-seconds timer expires. Connections that have
idled for longer than the timeout are candidates for removal.
When the pool size reaches steady-pool-size, the connection
removal stops.
| pooling
| When set to false, this attribute disables connection pooling.
| Default value of this attribute is true.
res-type
DataSource implementation class could implement one of of
javax.sql.DataSource, javax.sql.XADataSource or
| javax.sql.ConnectionPoolDataSource interfaces. To support
| configuration of JDBC drivers and applications that use
| java.sql.Driver implementations, set this attribute to
| java.sql.Driver. This optional attribute must be specified to
disambiguate when a Datasource class implements two or more
| of these interfaces or when a driver classname is to be provided. An error is
produced when this attribute has a legal value and the
indicated interface is not implemented by the datasource
| class. This attribute has no default value. (see also driver-classname).
| sql-trace-listeners
| Used to set if the SQL statements executed by applications need to be traced
| Aids administrators in analysing the statements. Multiple listeners can be
| specified as comma separated list of listener implementation class names.
| statement-cache-size
| Used to set the number of statements to be cached using the default
| caching mechanism (Least Recently Used). Default value of 0 implies
| the statement caching is not enabled.
statement-timeout-in-seconds
Sets the timeout property of a connection to enable
termination of abnormally long running queries. Default value
of -1 implies that it is not enabled.
steady-pool-size
minimum and initial number of connections maintained in the
pool.
transaction-isolation-level
Specifies the Transaction Isolation Level on the pooled
database connections. Optional. Has no default. If left
unspecified the pool operates with default isolation level
provided by the JDBC Driver. A desired isolation level can be
set using one of the standard transaction isolation levels,
which see.
Applications that change the Isolation level on a pooled connection
programmatically, risk polluting the pool and this could lead to
program errors. Also see: is-isolation-level-guaranteed
validate-atmost-once-period-in-seconds
Used to set the time-interval within which a connection is
validated atmost once. Default is 0 which implies that it is
not enabled. TBD: Documentation is to be corrected.
| validation-classname
| Used to set the custom validation implementation class name
| implemented by the user. This parameter is mandatory if the
| connection-validation-type is set to custom-validation. The class
| name provided must be accessible to the application server.
validation-table-name
specifies the table name to be used to perform a query to
| validate a connection. This parameter is mandatory, if
| is-connection-validation-required is set to true and
connection-validation-type set to table. Verification by
accessing a user specified table may become necessary for
connection validation, particularly if database driver caches
calls to setAutoCommit() and getMetaData().
wrap-jdbc-objects
When set to true, application will get wrapped jdbc objects
for Statement, PreparedStatement, CallableStatement,
| ResultSet, DatabaseMetaData. Defaults to true.
Used in:
resources
-->
<!ELEMENT jdbc-connection-pool (description?, property*)>
<!ATTLIST jdbc-connection-pool
name CDATA #REQUIRED
| datasource-classname CDATA #IMPLIED
res-type (javax.sql.DataSource | javax.sql.XADataSource | javax.sql.ConnectionPoolDataSource |
| java.sql.Driver) #IMPLIED
| driver-classname CDATA #IMPLIED
| ping %boolean; "false"
steady-pool-size CDATA "8"
max-pool-size CDATA "32"
max-wait-time-in-millis CDATA "60000"
pool-resize-quantity CDATA "2"
idle-timeout-in-seconds CDATA "300"
transaction-isolation-level %isolation; #IMPLIED
is-isolation-level-guaranteed %boolean; "true"
is-connection-validation-required %boolean; "false"
| connection-validation-method (auto-commit | meta-data | table | custom-validation)
| "table"
validation-table-name CDATA #IMPLIED
| validation-classname CDATA #IMPLIED
| init-sql CDATA #IMPLIED
fail-all-connections %boolean; "false"
non-transactional-connections %boolean; "false"
allow-non-component-callers %boolean; "false"
validate-atmost-once-period-in-seconds CDATA "0"
connection-leak-timeout-in-seconds CDATA "0"
connection-leak-reclaim %boolean; "false"
connection-creation-retry-attempts CDATA "0"
connection-creation-retry-interval-in-seconds CDATA "10"
statement-timeout-in-seconds CDATA "-1"
lazy-connection-enlistment %boolean; "false"
lazy-connection-association %boolean; "false"
associate-with-thread %boolean; "false"
| associate-with-thread-connections-count CDATA "1"
match-connections %boolean; "false"
max-connection-usage-count CDATA "0"
| sql-trace-listeners %CDATA #IMPLIED
| statement-cache-size CDATA "0"
| pooling %boolean; "true"
| wrap-jdbc-objects %boolean; "true">