blob: e65526feddca3ecd68d17208fa597a1c04ea062b [file] [log] [blame]
/*
* Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2021 Contributors to the Eclipse Foundation
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package org.glassfish.jdbc.config;
import com.sun.enterprise.config.serverbeans.Resource;
import com.sun.enterprise.config.serverbeans.ResourcePool;
import org.glassfish.api.admin.RestRedirect;
import org.glassfish.api.admin.RestRedirects;
import org.glassfish.api.admin.config.PropertiesDesc;
import org.glassfish.api.admin.config.PropertyDesc;
import org.glassfish.config.support.datatypes.Port;
import org.glassfish.connectors.config.validators.ConnectionPoolErrorMessages;
import org.glassfish.jdbc.config.validators.JdbcConnectionPoolConstraint;
import org.glassfish.jdbc.config.validators.JdbcConnectionPoolConstraints;
import org.glassfish.admin.cli.resources.UniqueResourceNameConstraint;
import org.glassfish.resourcebase.resources.ResourceDeploymentOrder;
import org.glassfish.resourcebase.resources.ResourceTypeOrder;
import org.jvnet.hk2.config.*;
import org.jvnet.hk2.config.types.Property;
import org.jvnet.hk2.config.types.PropertyBag;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Pattern;
import java.beans.PropertyVetoException;
import java.util.List;
/**
* 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.
*/
/* @XmlType(name = "", propOrder = {
"description",
"property"
}) */
@Configured
@JdbcConnectionPoolConstraints ({
@JdbcConnectionPoolConstraint(value = ConnectionPoolErrorMessages.MAX_STEADY_INVALID),
@JdbcConnectionPoolConstraint(value = ConnectionPoolErrorMessages.STMT_WRAPPING_DISABLED),
@JdbcConnectionPoolConstraint(value = ConnectionPoolErrorMessages.RES_TYPE_MANDATORY),
@JdbcConnectionPoolConstraint(value = ConnectionPoolErrorMessages.TABLE_NAME_MANDATORY),
@JdbcConnectionPoolConstraint(value = ConnectionPoolErrorMessages.CUSTOM_VALIDATION_CLASS_NAME_MANDATORY)
})
@RestRedirects({
@RestRedirect(opType = RestRedirect.OpType.POST, commandName = "create-jdbc-connection-pool"),
@RestRedirect(opType = RestRedirect.OpType.DELETE, commandName = "delete-jdbc-connection-pool")
})
@ResourceTypeOrder(deploymentOrder=ResourceDeploymentOrder.JDBC_POOL)
@UniqueResourceNameConstraint(message="{resourcename.isnot.unique}", payload=JdbcConnectionPool.class)
public interface JdbcConnectionPool extends ConfigBeanProxy, Resource, ResourcePool,
PropertyBag {
/**
*
* Gets the value of the datasourceClassname property.
*
* 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.
*
@return possible object is
* {@link String }
*/
@Attribute
String getDatasourceClassname();
/**
* Sets the value of the datasourceClassname property.
*
* @param value allowed object is
* {@link String }
*/
void setDatasourceClassname(String value) throws PropertyVetoException;
/**
*
* Gets the value of the driverClassname property.
*
* Name of the vendor supplied JDBC driver resource manager.
* Get classnames that implement java.sql.Driver.
*
@return possible object is
* {@link String }
*/
@Attribute
String getDriverClassname();
/**
* Sets the value of the driverClassname property.
*
* @param value allowed object is
* {@link String }
*/
void setDriverClassname(String value) throws PropertyVetoException;
/**
* Gets the value of the resType property.
*
* DataSource implementation class could implement one of
* javax.sql.DataSource, javax.sql.XADataSource or
* javax.sql.ConnectionPoolDataSource interfaces. This optional attribute
* must be specified to disambiguate when a Datasource class implements two
* or more of these interfaces. 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.
*
* @return possible object is
* {@link String }
*/
@Attribute
@Pattern(regexp="(java.sql.Driver|javax.sql.DataSource|javax.sql.XADataSource|javax.sql.ConnectionPoolDataSource)")
String getResType();
/**
* Sets the value of the resType property.
*
* @param value allowed object is
* {@link String }
*/
void setResType(String value) throws PropertyVetoException;
/**
* Gets the value of the steadyPoolSize property.
*
* Minimum and initial number of connections maintained in the pool
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "8", dataType = Integer.class)
@Min(value=0)
@Max(value=Integer.MAX_VALUE)
String getSteadyPoolSize();
/**
* Sets the value of the steadyPoolSize property.
*
* @param value allowed object is
* {@link String }
*/
void setSteadyPoolSize(String value) throws PropertyVetoException;
/**
* Gets the value of the maxPoolSize property.
*
* Maximum number of conections that can be created
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "32", dataType = Integer.class)
@Min(value=1)
@Max(value=Integer.MAX_VALUE)
String getMaxPoolSize();
/**
* Sets the value of the maxPoolSize property.
*
* @param value allowed object is
* {@link String }
*/
void setMaxPoolSize(String value) throws PropertyVetoException;
/**
* Gets the value of the maxWaitTimeInMillis property.
*
* Amount of time the caller will wait before getting a connection timeout.
* Default is 60 sec. A value of 0 will force caller to wait indefinitely.
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "60000", dataType = Integer.class)
@Min(value=0)
@Max(value=Integer.MAX_VALUE)
String getMaxWaitTimeInMillis();
/**
* Sets the value of the maxWaitTimeInMillis property.
*
* @param value allowed object is
* {@link String }
*/
void setMaxWaitTimeInMillis(String value) throws PropertyVetoException;
/**
* Gets the value of the poolResizeQuantity property.
*
* Number of connections to be removed when dle-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.
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "2", dataType = Integer.class)
@Min(value=1)
@Max(value=Integer.MAX_VALUE)
String getPoolResizeQuantity();
/**
* Sets the value of the poolResizeQuantity property.
*
* @param value allowed object is
* {@link String }
*/
void setPoolResizeQuantity(String value) throws PropertyVetoException;
/**
* Gets the value of the idleTimeoutInSeconds property.
*
* 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.
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "300", dataType = Integer.class)
@Min(value=0)
@Max(value=Integer.MAX_VALUE)
String getIdleTimeoutInSeconds();
/**
* Sets the value of the idleTimeoutInSeconds property.
*
* @param value allowed object is
* {@link String }
*/
void setIdleTimeoutInSeconds(String value) throws PropertyVetoException;
/**
* Gets the value of the transactionIsolationLevel property.
*
* Specifies the Transaction Isolation Level on 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
*
* @return possible object is
* {@link String }
*/
@Attribute
@Pattern(regexp="(read-uncommitted|read-committed|repeatable-read|serializable)")
String getTransactionIsolationLevel();
/**
* Sets the value of the transactionIsolationLevel property.
*
* @param value allowed object is
* {@link String }
*/
void setTransactionIsolationLevel(String value) throws PropertyVetoException;
/**
* Gets the value of the isIsolationLevelGuaranteed property.
*
* 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 when they are certain that the application
* does not change the isolation level before returning the connection.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="true", dataType=Boolean.class)
String getIsIsolationLevelGuaranteed();
/**
* Sets the value of the isIsolationLevelGuaranteed property.
*
* @param value allowed object is
* {@link String }
*/
void setIsIsolationLevelGuaranteed(String value) throws PropertyVetoException;
/**
* Gets the value of the isConnectionValidationRequired property.
*
* if true, connections are validated (checked to find out if they are
* usable) before giving out to the application. The default is false.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="false", dataType=Boolean.class)
String getIsConnectionValidationRequired();
/**
* Sets the value of the isConnectionValidationRequired property.
*
* @param value allowed object is
* {@link String }
*/
void setIsConnectionValidationRequired(String value) throws PropertyVetoException;
/**
* Gets the value of the connectionValidationMethod property.
*
* specifies the type of validation to be performed when
* is-connection-validation-required is true. 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)
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="table")
@Pattern(regexp="(auto-commit|meta-data|custom-validation|table)")
String getConnectionValidationMethod();
/**
* Sets the value of the connectionValidationMethod property.
*
* @param value allowed object is
* {@link String }
*/
void setConnectionValidationMethod(String value) throws PropertyVetoException;
/**
* Gets the value of the validationTableName property.
*
* Specifies the table name to be used to perform a query to validate a
* connection. This parameter is mandatory, if connection-validation-type is
* 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().
*
* @return possible object is
* {@link String }
*/
@Attribute
String getValidationTableName();
/**
* Sets the value of the validationTableName property.
*
* @param value allowed object is
* {@link String }
*/
void setValidationTableName(String value) throws PropertyVetoException;
/**
* Gets the value of the validationClassName property.
*
* Specifies the custom validation class name to be used to perform
* connection validation. This parameter is mandatory, if connection-validation-type is
* set to custom-validation.
*
* @return possible object is
* {@link String }
*/
@Attribute
String getValidationClassname();
/**
* Sets the value of the validationClassName property.
*
* @param value allowed object is
* {@link String }
*/
void setValidationClassname(String value) throws PropertyVetoException;
/**
* Gets the value of the failAllConnections property.
*
* 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.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="false", dataType=Boolean.class)
String getFailAllConnections();
/**
* Sets the value of the failAllConnections property.
*
* @param value allowed object is
* {@link String }
*/
void setFailAllConnections(String value) throws PropertyVetoException;
/**
* Gets the value of the nonTransactionalConnections property.
*
* A pool with this property set to true returns non-transactional
* connections. This connection does not get automatically enlisted
* with the transaction manager.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="false", dataType=Boolean.class)
String getNonTransactionalConnections();
/**
* Sets the value of the nonTransactionalConnections property.
*
* @param value allowed object is
* {@link String }
*/
void setNonTransactionalConnections(String value) throws PropertyVetoException;
/**
* Gets the value of the allowNonComponentCallers property.
*
* 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.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="false", dataType=Boolean.class)
String getAllowNonComponentCallers();
/**
* Sets the value of the allowNonComponentCallers property.
*
* @param value allowed object is
* {@link String }
*/
void setAllowNonComponentCallers(String value) throws PropertyVetoException;
/**
* Gets the value of the validateAtmostOncePeriodInSeconds property.
*
* 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.
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "0", dataType = Integer.class)
@Min(value=0)
@Max(value=Integer.MAX_VALUE)
String getValidateAtmostOncePeriodInSeconds();
/**
* Sets the value of the validateAtmostOncePeriodInSeconds property.
*
* @param value allowed object is
* {@link String }
*/
void setValidateAtmostOncePeriodInSeconds(String value) throws PropertyVetoException;
/**
* Gets the value of the connectionLeakTimeoutInSeconds property.
*
* 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.
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "0", dataType = Integer.class)
@Min(value=0)
@Max(value=Integer.MAX_VALUE)
String getConnectionLeakTimeoutInSeconds();
/**
* Sets the value of the connectionLeakTimeoutInSeconds property.
*
* @param value allowed object is
* {@link String }
*/
void setConnectionLeakTimeoutInSeconds(String value) throws PropertyVetoException;
/**
* Gets the value of the connectionLeakReclaim property.
*
* If enabled, connection will be reusable (put back into pool) after
* connection-leak-timeout-in-seconds occurs. Default value is false.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="false", dataType=Boolean.class)
String getConnectionLeakReclaim();
/**
* Sets the value of the connectionLeakReclaim property.
*
* @param value allowed object is
* {@link String }
*/
void setConnectionLeakReclaim(String value) throws PropertyVetoException;
/**
* Gets the value of the connectionCreationRetryAttempts property.
*
* The number of attempts to create a new connection.
* Default is 0, which implies no retries.
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "0", dataType = Integer.class)
@Min(value=0)
@Max(value=Integer.MAX_VALUE)
String getConnectionCreationRetryAttempts();
/**
* Sets the value of the connectionCreationRetryAttempts property.
*
* @param value allowed object is
* {@link String }
*/
void setConnectionCreationRetryAttempts(String value) throws PropertyVetoException;
/**
* Gets the value of the connectionCreationRetryIntervalInSeconds property.
*
* 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.
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "10", dataType = Integer.class)
@Min(value=0)
@Max(value=Integer.MAX_VALUE)
String getConnectionCreationRetryIntervalInSeconds();
/**
* Sets the value of the connectionCreationRetryIntervalInSeconds property.
*
* @param value allowed object is
* {@link String }
*/
void setConnectionCreationRetryIntervalInSeconds(String value) throws PropertyVetoException;
/**
* Gets the value of the statementTimeoutInSeconds property.
*
* 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.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="-1", dataType=Integer.class)
@Min(value=-1)
String getStatementTimeoutInSeconds();
/**
* Sets the value of the statementTimeoutInSeconds property.
*
* @param value allowed object is
* {@link String }
*/
void setStatementTimeoutInSeconds(String value) throws PropertyVetoException;
/**
* Gets the value of the lazyConnectionEnlistment property.
*
* 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
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="false", dataType=Boolean.class)
String getLazyConnectionEnlistment();
/**
* Sets the value of the lazyConnectionEnlistment property.
*
* @param value allowed object is
* {@link String }
*/
void setLazyConnectionEnlistment(String value) throws PropertyVetoException;
/**
* Gets the value of the lazyConnectionAssociation property.
*
* 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.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="false", dataType=Boolean.class)
String getLazyConnectionAssociation();
/**
* Sets the value of the lazyConnectionAssociation property.
*
* @param value allowed object is
* {@link String }
*/
void setLazyConnectionAssociation(String value) throws PropertyVetoException;
/**
* Gets the value of the associateWithThread property.
*
* Associate a connection with the thread such that when the same thread is
* in need of a connection, it can reuse the connection already associated
* with that thread, thereby not incurring the overhead of getting a
* connection from the pool. Default value is false
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="false", dataType=Boolean.class)
String getAssociateWithThread();
/**
* Sets the value of the associateWithThread property.
*
* @param value allowed object is
* {@link String }
*/
void setAssociateWithThread(String value) throws PropertyVetoException;
/**
* Gets the value of the pooling property.
*
* Property to disable pooling for the pool.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="true", dataType=Boolean.class)
String getPooling();
/**
* Sets the value of the pooling property.
*
* @param value allowed object is
* {@link String }
*/
void setPooling(String value) throws PropertyVetoException;
/**
* Gets the value of the statementCacheSize property.
*
* When specified, statement caching is turned on to cache statements,
* prepared statements, callable statements that are repeatedly executed by
* applications. Default value is 0, which implies the
* feature is not enabled.
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "0", dataType = Integer.class)
@Min(value=0)
@Max(value=Integer.MAX_VALUE)
String getStatementCacheSize();
/**
* Sets the value of the statementCacheSize property.
*
* @param value allowed object is
* {@link String }
*/
void setStatementCacheSize(String value) throws PropertyVetoException;
/**
* Gets the value of the statementCacheType property.
*
* When specified, statement caching type is set to cache statements,
* prepared statements, callable statements that are repeatedly executed by
* applications.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="")
String getStatementCacheType();
/**
* Sets the value of the statementCacheType property.
*
* @param value allowed object is
* {@link String }
*/
void setStatementCacheType(String value) throws PropertyVetoException;
/**
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "0", dataType = Integer.class)
@Min(value=0)
@Max(value=Integer.MAX_VALUE)
String getStatementLeakTimeoutInSeconds();
/**
* Sets the value of the statementLeakTimeoutInSeconds property.
*
* @param value allowed object is
* {@link String }
*/
void setStatementLeakTimeoutInSeconds(String value) throws PropertyVetoException;
@Attribute (defaultValue="false", dataType=Boolean.class)
String getStatementLeakReclaim();
/**
* Sets the value of the statementLeakReclaim property.
*
* @param value allowed object is
* {@link String }
*/
void setStatementLeakReclaim(String value) throws PropertyVetoException;
/**
* Gets the value of the initSql property.
*
* Init sql is executed whenever a connection created from the pool.
* This is mostly useful when the state of a
* connection is to be initialized
*
* @return possible object is
* {@link String }
*/
@Attribute
String getInitSql();
/**
* Sets the value of the initSql property.
*
* @param value allowed object is
* {@link String }
*/
void setInitSql(String value) throws PropertyVetoException;
/**
* Gets the value of the matchConnections property.
*
* 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.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="false", dataType=Boolean.class)
String getMatchConnections();
/**
* Sets the value of the matchConnections property.
*
* @param value allowed object is
* {@link String }
*/
void setMatchConnections(String value) throws PropertyVetoException;
/**
* Gets the value of the maxConnectionUsageCount property.
*
* 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.
*
* @return possible object is
* {@link String }
*/
@Attribute(defaultValue = "0", dataType = Integer.class)
@Min(value=0)
@Max(value=Integer.MAX_VALUE)
String getMaxConnectionUsageCount();
/**
* Sets the value of the maxConnectionUsageCount property.
*
* @param value allowed object is
* {@link String }
*/
void setMaxConnectionUsageCount(String value) throws PropertyVetoException;
/**
* Gets the value of the wrapJdbcObjects property.
*
* When set to true, application will get wrapped jdbc objects for
* Statement, PreparedStatement, CallableStatement, ResultSet,
* DatabaseMetaData. Defaults to false.
*
* @return possible object is
* {@link String }
*/
@Attribute (defaultValue="true", dataType=Boolean.class)
String getWrapJdbcObjects();
/**
* Sets the value of the wrapJdbcObjects property.
*
* @param value allowed object is
* {@link String }
*/
void setWrapJdbcObjects(String value) throws PropertyVetoException;
/**
* Gets the value of the SqlTraceListeners property.
*
* Comma separated list of SQL trace listener implementations to be used to
* trace the SQL statements executed by the applications. The default
* logger used by the system logs the SQL statements based on a set of
* values stored in SQLTraceRecord object.
*
* @return possible object is
* {@link String }
*/
@Attribute
String getSqlTraceListeners();
/**
* Sets the value of the sqltracelisteners property.
*
* @param value allowed object is
* {@link String }
*/
void setSqlTraceListeners(String value) throws PropertyVetoException;
/**
* Gets the value of the description property.
*
* @return possible object is
* {@link String }
*/
@Attribute
String getDescription();
/**
* Sets the value of the description property.
*
* @param value allowed object is
*
* {@link String }
*/
void setDescription(String value) throws PropertyVetoException;
/**
* Properties. This list is likely incomplete as of 21 October 2008.
*
* 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.
*
*/
@PropertiesDesc(
props={
@PropertyDesc(name="PortNumber", defaultValue="1527", dataType=Port.class,
description="Port on which the database server listens for requests"),
@PropertyDesc(name="Password", defaultValue="APP",
description="Password for connecting to the database"),
@PropertyDesc(name="User", defaultValue="APP",
description="User name for connecting to the database"),
@PropertyDesc(name="serverName", defaultValue="localhost",
description="Database server for this connection pool"),
@PropertyDesc(name="DatabaseName", defaultValue="sun-appserv-samples",
description="Database for this connection pool."),
@PropertyDesc(name="connectionAttributes", defaultValue=";create=true",
description="connection attributes")
}
)
@Element
List<Property> getProperty();
@DuckTyped
String getIdentity();
class Duck {
public static String getIdentity(JdbcConnectionPool resource){
return resource.getName();
}
}
}