@Target(value=TYPE) @Retention(value=RUNTIME) @Repeatable(value=DataSourceDefinitions.class) public @interface DataSourceDefinition
DataSource to
 be registered with JNDI. The DataSource may be configured by
 setting the annotation elements for commonly used DataSource
 properties.  Additional standard and vendor-specific properties may be
 specified using the properties element.
 
 The data source will be registered under the name specified in the
 name element. It may be defined to be in any valid
 Java EE namespace, which will determine the accessibility of
 the data source from other components.
 
 A JDBC driver implementation class of the appropriate type, either
 DataSource, ConnectionPoolDataSource, or
 XADataSource, must be indicated by the className
 element. The availability of the driver class will be assumed at runtime.
DataSource properties should not be specified more than once. If the url annotation element contains a DataSource property that was also specified using the corresponding annotation element or was specified in the properties annotation element, the precedence order is undefined and implementation specific:
   @DataSourceDefinition(name="java:global/MyApp/MyDataSource",
      className="org.apache.derby.jdbc.ClientDataSource",
      url="jdbc:derby://localhost:1527/myDB;user=bill",
      user="lance",
      password="secret",
      databaseName="testDB",
      serverName="luckydog"
   )// DO NOT DO THIS!!!
 
 
 In the above example, the databaseName, user
 and serverName properties were specified as part of the 
 url property and using the corresponding
 annotation elements. This should be avoided.
 
 If the properties annotation element is used and contains a 
 DataSource property that was also specified using the corresponding 
 annotation element, the annotation element value takes precedence.  
 For example:
 
   @DataSourceDefinition(name="java:global/MyApp/MyDataSource",
      className="org.apache.derby.jdbc.ClientDataSource",
      user="lance",
      password="secret",
      databaseName="testDB",
      serverName="luckydog",
       properties= {"databaseName=myDB", "databaseProp=doThis"}
   )// DO NOT DO THIS!!!
 
 This would result in the following values being used when configuring the DataSource:
 Vendors are not required to support properties that do not normally
 apply to a specific data source type. For example, specifying the
 transactional property to be true but supplying
 a value for className that implements a data source class
 other than XADataSource may not be supported.
 
Vendor-specific properties may be combined with or used to override standard data source properties defined using this annotation.
 DataSource properties that are specified and are not supported
 in a given configuration or cannot be mapped to a vendor specific
 configuration property may be ignored.
 
 Examples:
 
  
   @DataSourceDefinition(name="java:global/MyApp/MyDataSource",
      className="com.foobar.MyDataSource",
      portNumber=6689,
      serverName="myserver.com",
      user="lance",
      password="secret"
   )
 
 
 
 Using a URL:
 
 
  @DataSourceDefinition(name="java:global/MyApp/MyDataSource",
    className="org.apache.derby.jdbc.ClientDataSource",
    url="jdbc:derby://localhost:1527/myDB",
    user="lance",
    password="secret"
 )
 
 An example lookup of the DataSource from an EJB:
 @Stateless
 public class MyStatelessEJB {
   @Resource(lookup="java:global/MyApp/myDataSource")
    DataSource myDB;
      ...
 }
 
 DataSource, 
XADataSource, 
ConnectionPoolDataSource| Modifier and Type | Required Element and Description | 
|---|---|
| String | classNameName of a DataSource class that implements
   javax.sql.DataSourceorjavax.sql.XADataSourceorjavax.sql.ConnectionPoolDataSource. | 
| String | nameJNDI name by which the data source will be registered. | 
| Modifier and Type | Optional Element and Description | 
|---|---|
| String | databaseNameName of a database on a server. | 
| String | descriptionDescription of this data source | 
| int | initialPoolSizeNumber of connections that should be created when a connection pool
 is initialized. | 
| int | isolationLevelIsolation level for connections. | 
| int | loginTimeoutSets the maximum time in seconds that this data source will wait while
 attempting to connect to a database. | 
| int | maxIdleTimeThe number of seconds that a physical connection
 should remain unused in the pool before the
 connection is closed for a connection pool. | 
| int | maxPoolSizeMaximum number of connections that should be concurrently allocated for a
 connection pool. | 
| int | maxStatementsThe total number of statements that a connection pool should keep open. | 
| int | minPoolSizeMinimum number of connections that should be allocated for a
 connection pool. | 
| String | passwordPassword to use for connection authentication. | 
| int | portNumberPort number where a server is listening for requests. | 
| String[] | propertiesUsed to specify vendor-specific properties and less commonly
 used  DataSourceproperties such as: | 
| String | serverNameDatabase server name. | 
| boolean | transactionalSet to  falseif connections should not participate
 in transactions. | 
| String | urlA JDBC URL. | 
| String | userUser name to use for connection authentication. | 
public abstract String name
public abstract String className
javax.sql.DataSource or javax.sql.XADataSource
 or javax.sql.ConnectionPoolDataSource.public abstract String description
public abstract String url
url  annotation element contains a 
 DataSource property that was also specified using the corresponding 
 annotation element, the precedence order is undefined and 
 implementation specific.public abstract String user
public abstract String password
public abstract String databaseName
public abstract int portNumber
public abstract String serverName
public abstract int isolationLevel
Default is vendor-specific.
public abstract boolean transactional
false if connections should not participate
 in transactions.
 Default is to enlist in a transaction when one is active or becomes active.
public abstract int initialPoolSize
Default is vendor-specific
public abstract int maxPoolSize
Default is vendor-specific.
public abstract int minPoolSize
Default is vendor-specific.
public abstract int maxIdleTime
Default is vendor-specific
public abstract int maxStatements
Default is vendor-specific
public abstract String[] properties
DataSource properties such as:
 
Properties are specified using the format: propertyName=propertyValue with one property per array element.
 If a DataSource property is specified in the properties
 element and the annotation element for the  property is also
 specified, the annotation element value takes precedence.
public abstract int loginTimeout
Default is vendor-specific.
Copyright © 2018 GlassFish Community. All Rights Reserved.