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 à toutes les 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 de captureMode est définie par OFF dans le fichier de propriétés globales pdq.properties, si la valeur est définie par ON dans le fichier pdqProperties de niveau de source de données pour les sources de données utilisées par l'application, et définie par 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 par 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 par ON 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 d'exécution de pureQuery dans un fichier de propriétés pdq.properties et incluez le fichier dans la variable CLASSPATH du fournisseur JDBC WebSphere.

Lorsque vous utilisez le fichier pdq.properties pour définir des propriétés globales, placez le fichier pdq.properties dans la variable CLASSPATH du fournisseur JDBC ainsi que les fichiers JAR pureQuery. Les propriétés qui sont définies dans la variable CLASSPATH du fournisseur JDBC s'appliquent à toutes les applications qui utilisent le pilote. Les propriétés qui s'appliquent à une application ou source de données spécifique ne doivent pas être définies ici.

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. Etant donné que les propriétés sont appliquées à toutes les sources de données qui utilisent le fournisseur JDBC spécifique, toutes les applications fonctionnent avec le même mode d'exécution et toutes les instructions SQL capturées sont placé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.

Chaque fois que des modifications sont apportées à la valeur des propriétés, le serveur d'applications doit être redémarré pour pouvoir 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 placer ces fichiers de propriétés d'exécution de pureQuery dans l'un des emplacements suivants sur une installation WebSphere :
  • Dans les classes WEB-INF/ pour l'application Web
  • Dans le répertoire de bibliothèque WEB-INF/ sous forme de fichier JAR
  • Directement dans le répertoire d'application installé
Si un module Web est présent dans l'application, seules les deux premières options sont viables. Pour les applications EJB, vous pouvez utiliser l'un des trois emplacements mentionnés ci-dessus.

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.

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