p6spy is a generic solution for tracing SQL requests in applications that use the Java Database Connectivity (JDBC) interface. It is slightly more advanced than the native Weblogic trace tool. The program is open source and can be downloaded from: http://www.p6spy.com/. it is also worth considering JDBInsight, a commercial product that offers some interesting advanced functionality.
It is possible to replace up to 3 connection pools utilising the virtual driver : com.pspy.engine.spy.P6SpyDriver2 / realdriver2 etc.
Run the tail command (Unix/Cygwin) on the spy.log file which you can find in the startup directory of Weblogic. You will see logs similar to the following each time the Java application access the database:
1038568825766|0|1|rollback||
1038568825777|4|9|statement|SELECT U.IDENT FROM USER_TABLE E, STATEMENT_TABLE U WHERE U.IDENT = E.IDENT AND U.SOCIAL_SECURITY_NUM = ? AND E.EX_NUMBER = ? |SELECT U.IDENT FROM USER_TABLE E, STATEMENT U WHERE U.IDENT = E.IDENT AND U.SOCIAL_SECURITY_NUM = '24071964665659410' AND E.EX_NUMBER = '11113946600012'
1038568825765|0|1|commit||
1038568825766|0|1|rollback||
The trace gives the following information, each field is separated by a "|" symbol:
En analysant le SQL, il est important de lier les requêtes SQL à des EJBs ou à des Servlets et de les grouper par des unités de travail (transactions). Les fabricants de base de données fournissent un certain nombre d'outils pour analyser le SQL.
Assurer que le driver JDBC est configure dans le server Websphere comme un DataSource. Le process de configuration consiste de ? cloner ? le Provider existant et rederiger les requettes SQL par cette Provider qui utilise le driver p6spy.
- Demarrer le Websphere adminclient, par exemple:
./adminclient.sh udgir169 11220- Ouvrir l’aborescence :Resouces
- Ouvrir l’aborescence : JDBC Providers
- Ouvrir l’aborescence du Provider que vous veuillez espionne
- Clicke sur le repertoire ‘data source’
- Dans l’onglet ? general ? noter le JDNI Name, l’URL, le nom d’utilisateur et le mot passe (normalment remplacer avec les #, demandez au administrateur de base des donnees)
- Changez le ? JNDI name ? par exemple, ajoute un X_ : jndi/X_ftESource
- Clicke droit sur le JDBC provider et clicke ? New ?
- Dans l’onglet ? Nodes ? selectionne le node, clicke sur le bouton ? Specify Driver ? et parcourir a p6spy.jar.
- Clicke sur ? Install ?
- Dans l’onglet General entre l’information suivant :
Name : P6SpyDriver
Implementation class : com.p6spy.engine.spy.P6ConnectionPoolDataSource- Clicke sur ? OK ?
- Normallement un dialogue s’affichie qui confirme le manipulation
- Clicke sur ? OK ?
- Selectionne le repertoire ? Data Sources ? pour le nouveau Provider, entre le JNDI name noter au dessous, par example : jndi/ftESource
- Sauvgarder le configuration
- Configurez le fichier spy.properties qui se trouve dans le repertoire : properties, avec l’information que vous avez noter en haut :
realdatasource = jdbc/X_ftESource
realdatasourceclass = oracle.jdbc.pool.OracleConnectionPoolDataSourceourceclass
realdatasourceproperties = user;esplus,password;esplus,URL;jdbc:oracle:thin:udgir169:20011:P44SDB
realdriver = oracle.jdbc.driver.OracleDriver- redemarrer WebSphere
L’installation est terminer, vous pouvez utiliser le bouton ? Test Connection ? dans le onglet General dans le repertoire Data Sources pour tester chaque connection. Quand vous utiliser votre application un fichier spy.log est créer dans le repertoire de demarrage de WebSphere. Vous pouvez configurer spy.log comme avec WebLogic.
A Noter : selon le version de WebSphere vous pouvez avoir des ennuis avec les ‘2 phase commits’ parce que il y a maintenant deux drivers qui est utilise avec chaque requete. En ce cas il faut remplace le realdatasourceclass avec : oracle.jdbc.xa.client.OracleXADataSource, pour Oracle et faire le meme manipulation pour le Provider que vous espionne.