Définition implicite des informations client
Si vous surveillez les informations client de votre base de données, vous disposez de deux possibilités pour transmettre les données client de WebSphere Application Server aux connexions à la base de données.
- vous souhaitez que votre application reste indépendante des API propriétaires ou
- votre application utilise la persistance gérée par conteneur (CMP), auquel cas vous ne pouvez pas utiliser l'API propriétaire pour définir les informations client sur les connexions à la base de données.
La fonction de trace de WebSphere Application Server permet de définir les informations client de façon implicite. Vous pouvez désigner l'un des deux groupes de trace spéciaux pour activer ou désactiver la transmission des informations client : Fonction de trace WAS.clientinfo ou Fonction de trace WAS.clientinfopluslogging.
Scénarios d'exécution possibles
- Partage des connexions
En cas de partage des connexions, WebSphere Application Server définit les informations client sur le premier descripteur de connexion acquis uniquement. Si le partage des connexions est activé et que deux ou plusieurs méthodes getConnection sont appelées (ce qui génère deux ou plusieurs descripteurs sur la même connexion), seul le premier appel getConnection entraîne la transmission des informations client à la base de données dorsale. Ce scénario n'est pas valable pour la transmission explicite des informations client ; dans ce cas, chaque méthode setClientinformation est envoyée vers la base de données, que les connexions soient partagées ou non.
- Coexistence des procédures implicite et expliciteLorsque vous utilisez les procédures de transmission des informations client explicite et implicite en même temps, certaines données définies explicitement et implicitement sont combinées, mais en général, les premières prévalent. Par exemple, si l'application définit les informations comptables du client dans "myAccountingInfo", la chaîne accountingInfo finale transmise à la base de données dorsale ressemble à l'exemple de code suivant :
où 000325 est l'ID de l'unité d'exécution et où WSRdbManagedConnectionImpl@1234 est l'instance de connexion WebSphere.000325_WSRdbManagedConnectionImpl@1234_myAccountingInfo:
- Réinitialisation des informations client
Si le serveur d'applications est configuré de sorte qu'il transmette des informations client, il réinitialise les informations client lorsqu'une connexion est renvoyée au pool, mais uniquement si les mécanismes de trace WAS.clientinfo et WAS.clientinfopluslogging sont désactivés (WAS.clientinfo=all=disabled:WAS.clientinfopluslogging=all=disabled).
Dans le cas d'une définition explicite, cependant, l'opération de réinitialisation s'effectue uniquement lorsque l'application génère setClientInformation(null) sur la connexion WSConnection.
Fonction de trace WAS.clientinfo
Le mécanisme implicite est désactivé par défaut. Vous pouvez activer ce mécanisme de façon dynamique, sans avoir à arrêter et démarrer votre serveur d'applications, ou de façon statique en définissant le groupe de trace WebSphere Application Server WAS.clientinfo=all=enabled.
Les
informations collectées et définies implicitement sur la connexion à la base de données sont le nom d'utilisateur, l'emplacement de l'utilisateur et le nom de l'application.
Les
informations collectées et définies implicitement sur la connexion à la base de données sont l'ID de l'unité d'exécution, le nom d'utilisateur, l'emplacement de l'utilisateur et le nom de l'application.
ID unité d'exécution
Il s'agit d'une valeur hexadécimale de 8 caractères qui identifie l'unité d'exécution Java contrôlant le traitement de la demande d'application dans WebSphere Application Server. Il s'affiche dans l'en-tête de la trace.
- nom utilisateur
- Il s'agit du nom de l'utilisateur à l'origine de la demande d'application. Cette option est collectée et transmise à la base de données dorsale (si elle est prise en charge). Ici, la collecte des informations s'effectue par l'appel de la méthode WSSecurityHelper.getFirstCaller.
- emplacement de l'utilisateur
- Il s'agit du nom de l'emplacement de l'utilisateur, au format cellule:noeud:serveur. Cette option est collectée et transmise à la base de données dorsale (si elle est appropriée). Ici, la collecte des informations s'effectue par l'appel de la méthode WSSecurityHelper.getFirstServer.
- nom_application
- Il s'agit du nom de l'application en cours d'exécution. Cette valeur est le résultat de la méthode getApplication à partir de l'objet Java EE Name. Elle est collectée quelle que soit la valeur du paramètre Sécurité globale.
Fonction de trace WAS.clientinfopluslogging
Lors du débogage des erreurs de la base de données, comme les interblocages, un ensemble d'informations peut faciliter la tâche de débogage. Ces informations sont généralement obtenues en activant une trace RRA (Relational Resource Adapter) WebSphere et une trace de conteneur d'EJB (Enterprise JavaBeans). Il existe toutefois certains cas où le délai constitue un aspect critique lors de la reproduction d'un incident donné. Le fait de disposer d'une trop grande quantité d'informations de trace peut modifier le comportement de l'application, modifier les délais par exemple, et il peut être difficile de reproduire l'erreur.
- les chaînes SQL qui sont exécutées (comme select userId from tabl1 where id=? for update),
- le démarrage, la validation et l'annulation de transactions,
- les appels EJB (tels que Create, Remove, findByPrimaryKey).