Comment sont récupérées les transactions de base de données
Lorsque le gestionnaire de transactions Liberty récupère les transactions de base de données en attente de validation, il utilise l'identifiant unique ou le nom JNDI pour localiser l'élément dataSource actuel, puis détermine l'ID utilisateur et mot de passe à utiliser pour la récupération.
Configurez une source de données en spécifiant les attributs de l'élément dataSource dans le fichier de configuration server.xml. Vous pouvez également lui affecter un identificateur unique ou un attribut jndiName comme ceci :
<dataSource id="ds1" jndiName="jdbc/ds1"... />
Vous ne devez pas changer la valeur de l'attribut id ou jndiName lorsqu'une reprise est en instance pour une transaction à laquelle la source de données a participé. Si vous changez tout autre attribut de l'élément dataSource, ces changements sont conservés pour la reprise. Par conséquent, vous pouvez par exemple ajouter un attribut recoveryAuthDataRef spécifiant un ID d'utilisateur de base de données et un mot de passe à utiliser pour la reprise.
- Si l'élément dataSource a l'attribut recoveryAuthDataRef défini, l'ID utilisateur et le mot de passe de l'élément authData sont utilisés. Exemple :
<authData id="recoveryAuth" user="dbuser1" password="{xor}Oz0vKDtu"/> <dataSource id="ds1" jndiName="jdbc/ds1" jdbcDriverRef="DB2" recoveryAuthDataRef="recoveryAuth" .../>
- Si l'authentification gérée par conteneur est utilisée, l'ID utilisateur et le mot de passe de l'alias d'authentification géré par conteneur sont utilisés. Exemple :
- Le fichier ibm-web-bnd.xml contient le code
suivant :
<resource-ref name="jdbc/ds1ref" binding-name="jdbc/ds1"> <authentication-alias name="user1Auth"/> </resource-ref>
- Dans le fichier server.xml, vous devez définir le code suivant :
<authData id="user1Auth" user="dbuser1" password="{xor}Oz0vKDtu"/> <dataSource id="ds1" jndiName="jdbc/ds1" jdbcDriverRef="DB2" .../>
- Le fichier ibm-web-bnd.xml contient le code
suivant :
- L'ID utilisateur et le mot de passe de l'élément dataSource sont utilisés. Exemple :
<dataSource id="ds1" jndiName="jdbc/ds1" jdbcDriverRef="DB2" ...> <properties.db2.jcc databaseName="testdb" user="dbuser1" password="{xor}Oz0vKDtu"/> </dataSource>
- Si aucune des informations précédentes n'est disponible et si la récupération est tentée sans ID utilisateur ni mot de passe, le comportement est déterminé par le pilote JDBC et la base de données.