Portée des propriétés d'exécution pureQuery dans un environnement WebSphere Application Server

Vous pouvez définir les propriétés pureQuery Runtime pour contrôler les fonctions pureQuery Runtime suivantes : Vous pouvez contrôler la portée des propriétés d'exécution pureQuery en définissant la propriété dans un emplacement WebSphere spécifique. Si vous définissez une propriété à plusieurs emplacements, l'exécution pureQuery détermine la valeur à utiliser en suivant un ordre de priorité basé sur l'emplacement.
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 des propriétés d'exécution pureQuery 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 une même propriété. Sinon, les propriétés d'exécution pureQuery fusionnent 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 d'exécution pureQuery fusionnent avec les propriétés pureQuery de niveau global.
  • Niveau global : Les propriétés pureQuery s'appliquent à l'ensemble des applications de WebSphere Application Server.

Vous pouvez utiliser la propriété d'exécution pureQuery finalRepositoryProperties afin de récupérer des propriétés d'exécution d'un système de fichiers ou d'un référentiel dans une base de données. La récupération des propriétés à partir d'un système de fichiers ou d'un référentiel affecte l'ordre de priorité.

Définition d'un système de fichiers ou d'un référentiel

Avant de récupérer et de définir les propriétés d'exécution pureQuery de l'emplacement défini par la propriété finalRepositoryProperties, l'optimisation client pureQuery et les propriétés d'exécution pureQuery existantes sont à nouveau paramétrées avec les valeurs par défaut. Aucune propriété définie au niveau de la source de données n'est sauvegardée. Les propriétés récupérées et définies comme des propriétés pureQuery globales ne sont pas affectées.

Les exemples suivants montrent comment les paramètres des propriétés d'exécution pureQuery 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 captureMode est définie sur OFF dans le fichier de propriétés global pdq.properties, si elle est définie sur ON, NEW_STMTS ou LITE dans le fichier pdqProperties de niveau de source de données pour les sources de données utilisées par l'application et est 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 d'exécution de pureQuery sont récupérées à partir d'un système de fichiers ou d'un référentiel à l'aide de la propriété finalRepositoryProperties, la valeur de la propriété captureMode qui est spécifiée dans l'emplacement prévaut quel que soit le paramètre de propriété au niveau global, de source de données ou de l'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 qui est utilisée par l'application et que la propriété finalRepositoryProperties est également définie, l'exécution pureQuery 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.

Contrôle de la portée des propriétés d'exécution pureQuery dans un environnement WebSphere

Dans un environnement WebSphere, vous définissez les propriétés d'exécution pureQuery à différents emplacements afin de 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
Définissez les propriétés de pureQuery Runtime dans un fichier de propriétés pdq.properties et incluez le fichier dans le chemin d'accès aux classes du fournisseur JDBC WebSphere.

Lorsque vous utilisez le fichier de propriétés 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 contenant 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é traceFile de pureQuery Runtime peut être spécifiée uniquement dans un fichier pdq.properties global.

Définissez les propriétés pureQuery Runtime globales à 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 nécessaire, 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) pour les fournisseurs JDBC DB2 Universal JDBC Driver Provider et DB2 Universal JDBC Driver Provider (XA)
  6. Placez le fichier pdq.properties dans le répertoire indiqué 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 le trouvent.

  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 lors de la capture.
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 d'exécution de pureQuery 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'application 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 d'exécution de pureQuery sur la portée de niveau application en utilisant un ou plusieurs des fichiers de propriété suivants dans la variable CLASSPATH de l'application :
  • pdq.appwide.properties
  • pdq.DSName.properties

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

Le fichier pdq.appwide.properties définit les propriétés pureQuery spécifique à 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. Puis, mettez à 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 (.war file) est intégré à 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. Modifiez le fichier MANIFEST.MF de l'ensemble des 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.
L'emplacement est un système de fichiers ou un référentiel

Vous spécifiez un système de fichiers ou un référentiel dans une base de données à l'aide de la propriété d'exécution de pureQuery 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.

L'exécution pureQuery applique les règles suivantes lorsqu'elle récupère les propriétés à partir d'un emplacement qui est défini 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 l'exécution pureQuery 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. L'exécution pureQuery ne prend pas en charge plusieurs niveaux de réacheminement avec l'option finalRepositoryProperties.
  • En plus de définir la propriété finalRepositoryProperties, vous définissez la propriété d'exécution de pureQuery 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 d'exécution de pureQuery qui sont récupérées à partir de l'emplacement spécifié par la propriété finalRepositoryProperties ne seront activées pour la régénération automatique que si la propriété propertiesRefreshInterval est une des propriétés récupérées à partir de l'emplacement et est définie par une valeur positive. Chaque application peut avoir une propriété propertiesRefreshInterval différente qui est définie parmi les propriétés récupérées à partir de finalRepositoryProperties.

La propriété d'exécution pureQuery repositoryRequired contrôle le comportement de l'exécution pureQuery lorsqu'est utilisé un système de fichiers ou un référentiel. Vous définissez cette propriété dans un emplacement pureQuery WebSphere afin de contrôler le comportement de l'exécution pureQuery. 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