Définition des ressources de source de données dans les applications
Les applications peuvent définir les sources de données dans les annotations ou dans le descripteur de déploiement. Cette rubrique porte sur les similitudes et la compatibilité avec les sources de données WebSphere Application Server définies au niveau du serveur, du noeud, du cluster ou de la cellule. Elle décrit également les fonctions facultatives dans la définition de source de données.
Propriétés standard d'une définition de source de données
Elément d'annotation | Elément de descripteur | Commentaires |
---|---|---|
Nom | Nom | Nom JNDI de la source de données. Le nom doit se trouver dans l'un des espaces de nom java:global, java:app, java:module et java:comp. |
className | Nom de classe | Nom de classe qualifié complet du pilote JDBC qui implémente javax.sql.XADataSource, javax.sql.ConnectionPoolDataSource ou javax.sql.DataSource. |
databaseName | Nom de base de données | Valeur fournie au pilote JDBC. |
description | description | Valeur fournie au MBean DataSource. |
initialPoolSize | Taille de pool initiale | Valeur de propriété ignorée. Dans WebSphere Application Server, la taille de pool initiale est toujours 0. |
isolationLevel | Niveau d'isolement | Equivalent à la propriété personnalisée de source de données WebSphere Application Server, webSphereDefaultIsolationLevel. Il s'agit d'un niveau d'isolement de transaction par défaut pour les nouvelles connexions. |
loginTimeout | Délai d'attente de connexion | Valeur fournie au pilote JDBC. |
maxIdleTime | Délai max d'inactivité | Equivalent à la propriété de regroupement de connexions WebSphere Application Server, unusedTimeout. Cette propriété est ignorée dans le conteneur client dans lequel le regroupement de connexions n'est pas fourni. |
maxPoolSize | Taille max de pool | Equivalent à la propriété de regroupement de connexions WebSphere Application Server, maxConnections. Cette propriété est ignorée dans le conteneur client dans lequel le regroupement de connexions n'est pas fourni. |
maxStatements | Nbre max instructions | Définit le nombre maximal d'instructions pour le pool de connexions. Dans WebSphere Application Server, chaque connexion mise en pool dispose de sa propre mémoire cache. Par conséquent, maxStatements est divisé (à parts égales, arrondi à la valeur inférieure) entre la valeur maxPoolSize du pool. Si maxPoolSize est illimité, le regroupement d'instructions est désactivé. |
minPoolSize | Taille min de pool | Equivalent à la propriété de regroupement de connexions WebSphereApplication Server, minConnections. Cette propriété est ignorée dans le conteneur client dans lequel le regroupement de connexions n'est pas fourni. |
mot de passe | mot de passe | Mot de passe par défaut des demandes de connexion qui ne définissent pas un mot de passe. Envisagez d'utiliser un alias d'authentification au lieu de coder de manière permanente le nom d'utilisateur et le mot de passe dans l'application. |
portNumber | Numéro de port | Valeur fournie au pilote JDBC. |
serverName | Nom de serveur | Valeur fournie au pilote JDBC. |
transactional | transactional | Dans WebSphere Application Server, la propriété transactional indique si la connexion figure dans les transactions JTA. Lorsque transactional=false, les connexions ne figurent pas dans les transactions JTA, mais vous pouvez toujours exécuter les transactions par rapport à la base de données en utilisant autocommit=true ou connection.commit/rollback avec autocommit=false. Equivalent à l'opposé de la propriété personnalisée de source de données WebSphere Application Server, nonTransactionalDataSource. |
URL | URL | Valeur fournie au pilote JDBC. Si l'URL est spécifiée, les valeurs databaseName, serverName, portNumber sont ignorées. |
user | user | Nom d'utilisateur par défaut des demandes de connexion qui ne définissent pas un nom d'utilisateur. Envisagez d'utiliser un alias d'authentification au lieu de coder de manière permanente le nom d'utilisateur et le mot de passe dans l'application. |
Propriétés de fournisseur et personnalisées
Les propriétés du fournisseur du pilote JDBC peuvent être incluses dans la définition de source de données. La plupart des applications personnalisées WebSphere Application Server peuvent être également incluses dans la définition de source de données.
@DataSourceDefinition
(
name="java:app/env/myDataSource",
className="org.apache.derby.jdbc.EmbeddedXADataSource40",
databaseName="myDB",
properties=
{
// Propriétés du fournisseur du pilote JDBC Derby Embedded :
"createDatabase=create",
"connectionAttributes=upgrade=true",
// Propriétés personnalisées de WebSphere Application Server :
"connectionTimeout=60",
"dataStoreHelperClass=com.ibm.websphere.rsadapter.DerbyDataStoreHelper",
"validateNewConnection=true",
"validateNewConnectionRetryCount=5"
},
serverName=""
)
L'exemple suivant montre comment la définition de source de données est incluse dans le descripteur de déploiement :<data-source>
<name>java:app/env/myDataSource</name>
<class-name>org.apache.derby.jdbc.EmbeddedXADataSource40</class-name>
<database-name>myDB</database-name>
<property><name>createDatabase</name><value>create</value></property>
<property><name>connectionAttributes</name><value>upgrade=true</value></property>
<property><name>connectionTimeout</name><value>60</value></property>
<property><name>dataStoreHelperClass</name><value>com.ibm.websphere.rsadapter.DerbyDataStoreHelper</value></property>
<property><name>validateNewConnection</name><value>true</value></property>
<property><name>validateNewConnectionRetryCount</name><value>5</value></property>
<server-name/>
</data-source>
La liste des propriétés personnalisées
WebSphere Application
Server pouvant être définies de cette manière figure ci-dessous : - Propriétés de regroupement de connexions :
- agedTimeout
- authDataAlias
- authMechanismPreference
- connectionTimeout
- defaultConnectionTypeOverride
- globalConnectionTypeOverride
- mappingConfigAlias
- purgePolicy
- reapTime
- stuckThreshold
- stuckTime
- stuckTimerTime
- surgeCreationInterval
- surgeThreshold
- testConnection
- testConnectionInterval
- XA_RECOVERY_AUTH_ALIAS
- Data source custom properties:
- beginTranForResultSetScrollingAPIs
- beginTranForVendorAPIs
- connectionSharing
- enableMultithreadedAccessDetection
- errorDetectionModel
- freeResourcesOnClose
- oracleRACXARecoveryDelay (Oracle only)
- preTestSQLString
- userDefinedErrorMap
- validateNewConnection
- validateNewConnectionRetryCount
- validateNewConnectionRetryInterval
- validateNewConnectionTimeout
Références de ressources
Il est recommandé que les applications utilisent toujours des références de ressource lors de l'accès aux sources de données, qui sont plus faciles à remplacer par le déployeur.
Partage des connexions
Par défaut, pour une définition de source de données, une demande de connexion peut partager une connexion utilisée existante si elle correspond aux paramètres demandés d'origine de la connexion (connectionSharing=MatchOriginalRequest). De même, un partage de connexion peut être effectué en faisant correspondre la demande de connexion à l'état en cours de la connexion (connectionSharing=MatchCurrentState).
Cycle de vie
Le cycle de vie d'une définition de source de données est lié au cycle de vie des applications qui le définissent. Par conséquent, vous pouvez mettre à jour l'application pour changer la définition de source de données sans avoir à redémarrer le serveur. Si plusieurs applications contiennent la même définition de source de données, par exemple, les deux définitions de source de données ont des noms java:global identiques, des groupes de propriétés identiques et des valeurs identiques pour les propriétés, toutes les applications doivent être désinstallées avant de mettre à jour la définition de source de données et de résinstaller les applications.
Conflits entre les définitions de source de données
Les applications, modules et composants ne doivent pas définir de sources de données avec le même nom java:global qu'une autre application, car ce processus empêche les applications de coexister. Dans une application, les modules et les composants ne doivent pas définir de sources de données avec le même nom java:app qu'un autre module ou composant. Le conflit provoque l'échec de l'installation de l'application. Dans un module, les composants ne doivent pas définir de sources de données avec le même nom java:module que les autres composants. Le conflit provoque l'échec de l'installation de l'application. Dans le module Web, les composants ne doivent pas définir de sources de données avec le même nom java:comp que les autres composants. Le conflit provoque l'échec de l'installation de l'application.