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.

Remarque : L'attribut de chargeur de classe commonLibraryRef est recommandé pour les sources de données définies par l'application. L'attribut privateLibraryRef ne peut pas être utilisé pour l'espace de nom java:global et est déconseillé pour les autres portées. Si plusieurs applications déclarent le même espace de nom java:global pour spécifier la source de données, les fichiersserver.xml des applications doivent tous spécifier un attribut commonLibraryRef désignant la même bibliothèque partagée.

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>
En général, les propriétés définissables pour les éléments dataSource ou connectionManager, dans le fichier server.xml, sont également disponibles pour une source de données définie par une application. Cependant, vous ne pouvez pas spécifier de propriétés faisant référence à d'autres éléments, telles que connectionManagerRef et jdbcDriverRef, car pour une source de données définie par une application, le gestionnaire de connexions et le pilote JDBC sont définis implicitement. Lorsqu'une source de données définie par une application est utilisée pour la validation en deux phases, vous pouvez spécifier la propriété recoveryAuthDataRef pour sélectionner les données d'authentification à utiliser pour la récupération des transactions. Vous devez toutefois savoir que la récupération des transactions n'est possible que pendant l'exécution de l'application. Vous pouvez utiliser des variables, des mots de passe encodés et des éléments de syntaxe de durée dans une source de données définie par une application.
Remarque : La syntaxe de durée ne s'applique pas aux propriétés qui sont explicitement définies dans l'annotation. Par exemple, loginTimeout ou maxIdleTime.

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"
        )
})

Icône indiquant le type de rubrique Rubrique de référence

Dispositions pour les centres de documentation | Commentaires


Icône d'horodatage Dernière mise à jour: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=rwlp_ds_appdefined
Nom du fichier : rwlp_ds_appdefined.html