Portée des propriétés pureQuery Runtime dans un environnement WebSphere Application Server

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 :
  1. Sélectionnez le lien JDBC Providers (Fournisseurs JDBC).
  2. Sélectionnez le fournisseur DB2 Universal JDBC Driver Provider ou DB2 Universal JDBC Driver Provider (XA).
  3. 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.
  4. Appliquez les modifications au fournisseur JDBC sélectionné et enregistrez les modifications.
  5. 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)
  6. 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.

  7. 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 :
  • pdq.appwide.properties
  • pdq.DSName.properties

    DSName est la valeur de la propriété personnalisée du pilote JDBC WebSphere DB2 Universal, dataSourceName, qui est définie sur la source de données.

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 :
  1. Créez un fichier JAR contenant le fichier pdq.appwide.properties. Dans cet exemple, le fichier est pdq_props.jar.
  2. Placez pdq_props.jar dans le dossier suivant :
    REP_BASE_WAS/profiles/AppSrv01/installedApps/version1/MyAppEAR.ear 
  3. 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.


Commentaires