Orígenes de datos definidos por la aplicación
Puede definir un origen de datos dentro de la aplicación, mediante anotaciones o en el descriptor de despliegue, tal como se define en la especificación Java™ EE.
Nota: El atributo commonLibraryRef
de cargador de clases se recomienda para los orígenes de datos definidos por la aplicación.
No se puede utilizar el atributo privateLibraryRef para el
espacio de nombres java:global y disuadido para
los otros ámbitos. Si varias aplicaciones declaran el mismo espacio de nombres java:global
para especificar el origen de datos, los archivos server.xml de
las aplicaciones deben todos especificar un atributo commonLibraryRef
para la misma biblioteca compartida.
Cuando defina un origen de datos en una aplicación, el controlador JDBC debe estar disponibles para la aplicación. Esto se consigue configurando una biblioteca compartida en el archivo server.xml de la aplicación.
Por ejemplo:
<application id="myApp" name="myApp" location="myApp.war" type="war">
<classloader commonLibraryRef="DB2Lib"/>
</application>
<library id="DB2Lib">
<fileset dir="C:/DB2/java" includes="db2jcc4.jar db2jcc_license_cisuz.jar"/>
</library>
A continuación, puede definir un origen de datos en su aplicación mediante anotaciones o en el descriptor de despliegue.
- Utilice las anotaciones del ejemplo siguiente:
@DataSourceDefinition( name = "java:comp/env/jdbc/db2", className = "com.ibm.db2.jcc.DB2DataSource", databaseName = "SAMPLEDB", serverName = "localhost", portNumber = 50000, properties = { "driverType=4" }, user = "user1", password = "pwd1" ) public class MyServlet extends HttpServlet { @Resource(lookup="java:comp/env/jdbc/db2") DataSource ds;
- Utilice el descriptor de despliegue como en el siguiente ejemplo, por ejemplo, en un archivo web.xml:
<data-source> <name>java:comp/env/jdbc/db2</name> <class-name>com.ibm.db2.jcc.DB2DataSource</class-name> <server-name>localhost</server-name> <port-number>50000</port-number> <database-name>SAMPLEDB</database-name> <user>user1</user> <password>pwd1</password> <property><name>driverType</name><value>4</value></property> </data-source>
En general, las propiedades que se pueden definir en dataSource o connectionManager de los archivos server.xml también pueden especificarse en los orígenes de datos definidos por la aplicación. Sin embargo, no puede especificar propiedades que hagan referencia a otros elementos, tales como connectionManagerRef y jdbcDriverRef, porque el origen de datos definido por la aplicación define implícitamente la conexión del gestor y el controlador JDBC. Cuando se utilizan orígenes de datos
definidos por la aplicación para el compromiso en dos fases, puede especificar la propiedad recoveryAuthDataRef para seleccionar los datos de autenticación que se utilizan para la recuperación de transacciones. Sin embargo, es importante tener en cuenta que la recuperación de transacciones sólo es posible mientras se está ejecutando la aplicación. Puede utilizar variables, contraseñas codificadas y sintaxis de duración en los orígenes de datos definidos por la aplicación.
Nota: La sintaxis de duración no se aplica a las propiedades que están definidas explícitamente en la anotación, tales como loginTimeout o maxIdleTime.
A continuación se muestra un ejemplo de dos orígenes de datos utilizando las propiedades del gestor de conexiones, variables, contraseñas codificadas y sintaxis de duración.
@DataSourceDefinitions(value = {
@DataSourceDefinition(
name = "java:comp/env/jdbc/derby",
className = "org.apache.derby.jdbc.EmbeddedDataSource40",
databaseName = "${shared.resource.dir}/data/SAMPLEDB",
minPoolSize = 1,
maxPoolSize = 10,
maxIdleTime = 180,
properties = { "agedTimeout=10m", "connectionTimeout=30s", "createDatabase=create" }
),
@DataSourceDefinition(
name = "java:comp/env/jdbc/oracle",
className = "oracle.jdbc.pool.OracleDataSource",
url = "jdbc:oracle:thin:@//localhost:1521/SAMPLEDB",
user = "user1",
password = "{xor}Oz0vKDtt"
)
})