Source de données définie par l'application
Vous pouvez définir une source de données au sein de votre application, par le biais d'annotations ou dans le descripteur de déploiement, conformément à la spécification Java™ EE.
Lorsqu'une source de données est définie directement dans une application, le pilote JDBC doit être rendu accessible à cette application. Pour ce faire, il suffit de configurer une bibliothèque partagée pour l'application dans le fichier server.xml.
Exemple :
<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>
Ensuite, vous pouvez définir une source de données dans votre application par le biais d'annotations ou dans le descripteur de déploiement.
- Utilisation d'annotations comme dans l'exemple suivant :
@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;
- Utilisation du descripteur de déploiement comme dans l'exemple suivant (un fichier
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>
Voici un exemple de deux sources de données dans lesquelles ont utilise des propriétés de gestionnaire de connexions (pool de connexions), des variables, des mots de passe encodés et une syntaxe de durée.
@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"
)
})