Définissez les propriétés pureQuery Runtime pour contrôler
le fonctionnement de pureQuery Runtime.
Vous pouvez contrôler la portée des propriétés
pureQuery Runtime en définissant la propriété dans un emplacement WebSphere spécifique.
WebSphere utilise
l'emplacement pour déterminer la portée de la propriété ainsi que l'ordre de
priorité d'une propriété si elle est définie à des emplacements multiples.
Les
niveaux de portée pour WebSphere sont
classés selon l'ordre de priorité suivant :
- Niveau d'application : les propriétés pureQuery s'appliquent à l'application WebSphere.
Les paramètres de propriété pureQuery Runtime
au niveau de l'application se substituent à la fois aux paramètres
de niveau global et aux paramètres de niveau de source de données pour la même propriété. Sinon, les propriétés pureQuery Runtime
sont fusionnées avec les propriétés pureQuery globales
et les propriétés pureQuery de niveau de source de données.
- Niveau de source de données : les propriétés pureQuery
s'appliquent à toutes les connexions créées à partir de la source de données. Les paramètres de propriété de niveau de source de données remplacent les
paramètres de propriété de niveau global si la même propriété est définie aux
deux niveaux. Sinon,
les propriétés pureQuery Runtime
sont fusionnées avec les propriétés pureQuery de niveau global.
- Niveau global : les propriétés pureQuery
s'appliquent à toutes les applications du serveur WebSphere Application
Server.
Vous pouvez utiliser la propriété pureQuery Runtime
finalRepositoryProperties pour récupérer les propriétés
d'exécution à partir d'un système ou référentiel de fichiers dans une base de données. La récupération des propriétés à
partir d'un système ou référentiel de fichiers
affecte l'ordre de priorité.
- Définition d'un système de fichiers ou d'un référentiel
Avant que pureQuery Runtime
récupère et définisse les propriétés à partir de l'emplacement spécifié
par la propriété finalRepositoryProperties, l'optimisation client pureQuery
et les propriétés pureQuery Runtime
existantes sont réinitialisées sur leur valeur par défaut. Aucune propriété
définie au niveau de la source de données n'est sauvegardée.
Les exemples suivants illustrent comment les paramètres de propriété pureQuery Runtime
sont déterminés :
- Si une propriété est définie à plusieurs niveaux, le niveau détermine la valeur
à utiliser. Par exemple, si la valeur de captureMode est
définie sur OFF dans le fichier de propriétés globales pdq.properties, si la valeur est
définie sur ON, NEW_STMTS, ou LITE dans le fichier pdqProperties de niveau de source de données pour la
source de données utilisée par l'application, et définie sur OFF dans le niveau
d'application pdq.appwide.properties, le paramètre de niveau d'application
prévaut et la valeur de la propriété captureMode est
définie sur OFF.
- Si les propriétés pureQuery Runtime
sont récupérées d'un système de fichiers ou d'un référentiel avec la propriété finalRepositoryProperties,
la valeur des propriétés spécifiées dans l'emplacement spécifié
par la propriété finalRepositoryProperties prévaut
quel que soit le paramètre de propriété au niveau global, de source de données
ou d'application. Par exemple, si la valeur de captureMode
est définie sur ON, NEW_STMTS ou LITE dans le fichier pdqProperties de niveau de source de données pour
la source de données utilisée par l'application et que la propriété
finalRepositoryProperties est également définie, pureQuery Runtime
récupère les propriétés à partir de l'emplacement défini par la propriété finalRepositoryProperties.
Si la propriété captureMode n'est pas définie parmi les
propriétés récupérées, la propriété captureMode est définie
à sa valeur par défaut, OFF. Si la valeur de la propriété
captureMode est définie comme une propriété récupérée, cette
valeur est utilisée. En général, les
mêmes règles s'appliquent à toutes les propriétés non globales à l'exception des
propriétés qui définissent l'emplacement du référentiel final.
Contrôle de la portée des propriétés pureQuery Runtime dans un environnement WebSphere
Dans
un environnement WebSphere,
vous définissez les propriétés pureQuery Runtime
dans différents emplacements pour contrôler le niveau de portée des
propriétés. L'emplacement affecte également
l'ordre de priorité lorsqu'une propriété est définie dans des emplacements
multiples.
- Emplacement de portée globale
- Spécifiez les propriétés pureQuery Runtime
dans un fichier de propriétés pdq.properties et incluez le répertoire
contenant le fichier dans le chemin d'accès aux classes du fournisseur
JDBC WebSphere.
Lorsque vous utilisez le fichier pdq.properties pour définir des
propriétés globales, placez le répertoire contenant le fichier pdq.properties
dans le chemin d'accès aux classes du fournisseur JDBC qui contient les fichiers JAR pureQuery. Les propriétés définies
dans le chemin d'accès aux classes du fournisseur JDBC s'appliquent à toutes les applications
utilisant le pilote. N'indiquez pas de propriétés qui s'appliquent à une application ou
à une source de données spécifique.
La propriété pureQuery Runtime traceFile peut
uniquement être spécifiée dans un fichier de propriétés globales pdq.properties.
Vous pouvez également
définir des propriétés globales pureQuery
Runtime à partir de la console d'administration de WebSphere Application Server :
- Sélectionnez le lien JDBC Providers (Fournisseurs JDBC).
- Sélectionnez le fournisseur DB2 Universal JDBC
Driver Provider ou DB2 Universal JDBC Driver
Provider (XA).
- Si vous devez ajouter les fichiers JAR pureQuery
au chemin d'accès aux classes, ajoutez le répertoire contenant les fichiers JAR pureQuery à la
zone Class path (Chemin d'accès aux classes).
Remarque : N'incluez pas le nom de fichier pdq.properties.
- Appliquez les modifications au fournisseur JDBC sélectionné et enregistrez les modifications.
- Il peut s'avérer nécessaire de modifier la zone Class path (Chemin d'accès aux classes) des
deux fournisseurs JDBC, DB2 Universal JDBC Driver Provider et DB2
Universal JDBC Driver Provider (XA)
- Placez votre fichier pdq.properties dans le répertoire spécifié
dans la zone Class path (Chemin d'accès aux classes).
Lorsque le fichier pdq.properties
se trouve dans le répertoire, WebSphere Application Server et pureQuery Runtime
trouvent tous deux le fichier de propriétés.
- En fonction de votre environnement d'application, vous devez redémarrer le serveur d'applications,
le serveur WebSphere Application Server ou les deux serveurs
pour que les modifications prennent effet.
Remarque : Lorsque
vous modifiez le fichier pdq.properties pour convertir les instructions SQL en
cours d'exécution du mode dynamique en mode statique, un redémarrage du serveur
d'applications est nécessaire pour refléter les changements. Puisque les propriétés sont
appliquées à l'ensemble des sources de données utilisant le fournisseur JDBC spécifique,
toutes les applications s'exécutent avec le même mode d'exécution, et toutes les instructions SQL
sont capturées dans le même fichier pureQueryXML.
- Emplacement de portée de niveau de source de données
Spécifiez la propriété personnalisée pdqProperties du
pilote JDBC sur la source de données WebSphere.
Les utilisateurs
peuvent définir les propriétés pureQuery Runtime
pour chaque source de données. Le niveau de source de données est approprié lorsque les
paramètres de chaque source de données sont indépendants les uns des autres. Par
exemple, si l'application utilise plusieurs sources de données distinctes, chaque
source de données capture l'instruction SQL qui lui est destinée dans son propre
fichier pureQueryXML.
Lorsque les propriétés sont définies sur la source de
données, elles sont appliquées à toutes les applications qui utilisent cette
source de données. Ainsi, lorsque des applications partagent une source de données,
les instructions SQL sont capturées dans un fichier commun à toutes les
applications.
A chaque modification de la valeur de la propriété
pdqProperties de la source de données, le serveur d'applications doit être
redémarré pour que le serveur d'applications puisse utiliser les nouvelles valeurs.
- Emplacement de la portée de niveau application
Activez les propriétés pureQuery Runtime sur la portée de niveau application
en utilisant l'un des fichiers de propriétés suivants ou les deux dans
l'application CLASSPATH :
Le fichier pdq.appwide.properties spécifie les propriétés pureQuery spécifiques à l'application. Toutes les valeurs de propriété qui sont spécifiées dans ce fichier
seront appliquées à toutes les sources de données que l'application utilise.
Le
fichier pdq.DSName.properties définit les propriétés spécifiques
aux sources de données d'une application.
Les propriétés spécifiées dans ce fichier
seront uniquement appliquées à la source de données spécifique utilisée par
l'application. DSName est la valeur de chaîne de la propriété
personnalisée WebSphere
dataSourceName correspondant à la source de données.
Cette propriété personnalisée est définie à l'aide d'étapes similaires aux étapes
utilisées pour définir la propriété personnalisée
WebSphere
pdqProperties.
Pour les applications
qui utilisent le nom de source de données DSName, les propriétés
spécifiées dans pdq.DSName.properties sont prioritaires sur
celles spécifiées par pdq.appwide.properties.
Vous pouvez créer
un fichier JAR contenant les fichiers de propriétés pureQuery Runtime
et placer le fichier JAR directement sous le répertoire d'application de
l'installation WebSphere.
Mettez ensuite à jour le fichier MANIFEST.MF de tous les modules utilisant les propriétés pureQuery Runtime.
Si une application utilise des fichiers de propriétés qui
lui sont spécifiques, tels que les fichiers pdq.appwide.properties ou
pdq.dsName.properties, vous devez purger le pool de connexions
WebSphere et redémarrer
l'application et non le serveur d'applications afin que les nouvelles
valeurs de propriétés prennent effet après leur changement.
Dans l'exemple
suivant, les propriétés pureQuery Runtime
se trouvent dans le fichier pdq.appwide.properties et le projet Web dynamique
(fichier .war) est inclus dans un fichier .ear. Après avoir déployé l'application dans un environnement
WebSphere, le répertoire installedApps contient le répertoire MyAppEAR.ear. Les
étapes suivantes décrivent comment activer les propriétés pureQuery Runtime au niveau de
l'application :
- Créez un fichier JAR contenant le fichier pdq.appwide.properties. Dans cet exemple, le fichier est pdq_props.jar.
- Placez pdq_props.jar dans le dossier suivant :
REP_BASE_WAS/profiles/AppSrv01/installedApps/version1/MyAppEAR.ear
- Editez le fichier MANIFEST.MF de tous les modules utilisant les propriétés pureQuery Runtime. Dans cet exemple, le fichier d'archives Web MyApp.war utilise les propriétés et le fichier
MANIFEST.MF se trouve dans le répertoire suivant :
REP_BASE_WAS/profiles/AppSrv01/installedApps/version1/MyAppEAR.ear/MyAppEAR.war/META-INF/MANIFEST.MF
Ajoutez l'entrée
Class-Path suivante au fichier pdq_props.jar :
Class-Path: pdq_props.jar
L'entrée se trouve sur une ligne unique du fichier MANIFEST.MF, avec un espace entre la propriété et le nom de fichier.
Si les modules d'une application utilisent des sources de données différentes,
vous pouvez spécifier des propriétés pureQuery Runtime
pour chaque source de données. Dans cet exemple, une propriété JCC personnalisée de nom de source de données est définie sur la source de données. Dans cet exemple, deux sources de données différentes portant les noms DS1 et DS2 existent dans l'environnement WebSphere Application Server. Dans cet exemple, l'application comprend deux modules :
- Le module Web Web1 qui utilise la source de données DS1
- Le module EJB EJB1 qui utilise la source de données DS2
Vous créez deux fichiers de propriétés
pureQuery Runtime pour chaque source de données.
- pdq.DS1.properties
- pdq.DS2.properties
Créez un fichier JAR contenant les deux fichiers pureQuery Runtime
et placez-le dans le répertoire de l'application installée comme décrit précédemment.
- Spécification de variables JNDI dans les fichiers de propriétés de la portée
au niveau de l'application
WebSphere Application
Server 8 prend en charge les variables JNDI. pureQuery Runtime
Version 3.2 et les versions ultérieures prennent en charge les variables JNDI pour le fichier de propriétés d'exécution
de l'application étendue lors de l'utilisation de WebSphere Application
Server Version 8.
Cela simplifie le déploiement des fichiers pdq.appwide.properties :
un fichier générique unique pour toutes les applications à déployer
rend inutile l'intégration de valeurs spécifiques aux applications intégrées dans chaque fichier.
Lorsque
vous utilisez WebSphere Version
8 ou ultérieure avec pureQuery Runtime
Version 3.2 ou ultérieure, vous pouvez spécifier les variables ${appName} et
${moduleName} dans les valeurs de propriété
d'exécution pureQuery. Les variables sont prises en charge dans le fichier de propriétés d'exécution pureQuery. Par
exemple, vous pouvez utiliser les variables avec la propriété d'exécution pureQueryXml
afin de spécifier un fichier pureQueryXML.
pdq.pureQueryXml=C:\\capturedFiles\\${appName}-${moduleName}.pdqxml
- L'emplacement est un système de fichiers ou un référentiel.
Spécifiez un système de fichiers ou un référentiel dans une base de données
avec la propriété pureQuery Runtime finalRepositoryProperties.
Cette propriété peut être définie au niveau global, au niveau de la source de
données ou au niveau de l'application.
pureQuery Runtime
applique les règles suivantes lors de la récupération de propriétés à partir d'un
emplacement spécifié par la propriété
finalRepositoryProperties :
- Les propriétés qui sont chargées à partir de finalRepositoryProperties
n'affectent que l'application qui les charge.
- Les propriétés qui sont chargées à partir de finalRepositoryProperties
mais qui ne sont pas valides pour l'optimisation client pureQuery
ou pour pureQuery Runtime
sont ignorées et consignées si la consignation est activée. Ce comportement est identique aux propriétés de niveau de source de données
et de niveau application.
- La valeur de la propriété finalRepositoryProperties est ignorée
si cette propriété est récupérée depuis l'emplacement défini par la propriété
finalRepositoryProperties initiale. pureQuery Runtime ne prend
pas en charge plusieurs niveaux de redirection avec la propriété finalRepositoryProperties.
- En plus de définir la propriété finalRepositoryProperties,
vous définissez la propriété pureQuery Runtime
propertiesGroupId afin de définir la version du groupe
d'exécution dans un référentiel créé dans une base de données utilisée par
l'application pour récupérer des données pureQuery.
La valeur de la propriété
propertiesGroupId est ignorée à moins d'être utilisée avec un
référentiel créé dans une base de données. Lorsqu'un référentiel est utilisé, vous
ne pouvez pas modifier la valeur de la propriété propertiesGroupId
au sein des propriétés redirigées.
- Les propriétés pureQuery Runtime
récupérées dans le référentiel d'une base de données spécifiée
par la propriété finalRepositoryProperties seront
activées pour l'actualisation automatique de propriété en fonction des valeurs des
propriétés runtimeGroupActivationCheckInterval et
propertiesRefreshInterval :
- La propriété runtimeGroupActivationCheckInterval contrôle le moment où pureQuery Runtime
vérifie les versions de groupe d'exécution activées. La propriété doit être
définie pour qu'elle s'applique à toutes les instances pureQuery Runtime
qui exécutent une machine virtuelle Java.
- La propriété propertiesRefreshInterval peut
être utilisée pour indiquer un intervalle spécifique pour vérifier les mises les mises à jour apportées aux informations pureQuery pour une
version de groupe d'exécution. La propriété peut également être définie de façon à
désactiver toutes les vérifications d'informations pureQuery
mises à jour pour la version du groupe d'exécution, y compris la vérification qui se produit
lorsqu'une version de groupe d'exécution est activée.
Pour plus d'informations sur les propriétés, voir lapropriété runtimeGroupActivationCheckInterval
et la propriété propertiesRefreshInterval.
La propriété pureQuery Runtime repositoryRequired
contrôle le comportement de pureQuery Runtime
lors de l'utilisation d'un système de fichiers ou d'un référentiel. Spécifiez la propriété dans
un emplacement WebSphere pureQuery pour contrôler le comportement de pureQuery Runtime.
La valeur de la propriété
repositoryRequired peut être remplacée en définissant la
propriété repositoryRequired comme l'une des propriétés
récupérées.