Vous pouvez personnaliser votre application pour appeler des méthodes définies à l'aide d'un modèle
Stats/PMI (Performance Monitoring Infrastructure), d'un regroupement de ressources, d'un module Stats/PMI et de méthodes de mise à jour
de statistiques personnalisées.
Pourquoi et quand exécuter cette tâche
Vous pouvez personnaliser votre application pour appeler des méthodes définies à l'aide d'un modèle
Stats/PMI, d'un regroupement de ressources, d'un module Stats/PMI et de méthodes de mise à jour
de statistiques personnalisées. Le processus suivant est requis pour instrumenter un composant à l'aide d'un PMI personnalisé :
- Définissez un modèle Stats/PMI (fichier xml).
- Définissez le regroupement de ressources (fichier de propriétés).
- Définissez le module Stats/PMI et créez l'objet Stats/PMI à l'aide de
StatsFactory.
- Définissez des méthodes que votre application va utiliser pour mettre à jour les statistiques personnalisées.
- Mettez à jour votre application pour appeler les méthodes (définies à l'étape précédente) de manière appropriée.
- Accédez à l'application.
- Connectez-vous à Tivoli Performance Viewer (TPV) et affichez les statistiques PMI personnalisées.
Procédure
- Définissez le modèle Stats/PMI. StatsFactory
permet à un composant d'exécution de créer un module personnalisé Stats/PMI à l'aide d'un modèle
XML. Le modèle doit suivre le fichier DTD com/ibm/websphere/pmi/xml/stats.dtd.
L'exemple suivant présente un modèle utilisé dans un modèle d'application.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Stats SYSTEM "stats.dtd">
<Stats type="com.stats.MyStats">
<description>MyStats.desc</description>
<resourceBundle>com.stats.MyStatsResourceBundle</resourceBundle>
<CountStatistic ID="1" name="MyStats.NumRequests">
<level>low</level>
<unit>MyStats.unit.none</unit>
<description>MyStats.NumRequests.desc</description>
<statisticSet>basic</statisticSet>
</CountStatistic>
<BoundedRangeStatistic ID="2" name="MyStats.expensiveStat ">
<level>high</level>
<unit>MyStats.unit.none</unit>
<description>MyStats.expensiveStat.desc</description>
<updateOnRequest>true</updateOnRequest>
</BoundedRangeStatistic>
</Stats>
- Définissez le regroupement de ressources Le regroupement de ressources
vous permet de définir le nom de la statistique et sa description en utilisant le langage/les mots appropriés. Un modèle de regroupement de ressources doit ressembler à ceci :
MyStats.desc=My View PMI Module
MyStats.NumRequests=Request Count
MyStats.NumRequests.desc=Total number of My view requests served.
MyStats.unit.none=None
MyStats.expensiveStat = Expensive Stat
MyStats. expensiveStat.desc = Number of Expensive stats
MyStats.Group= My Group
MyStats.Instance=My Instance
- Définissez le module Stats/PMI et créez l'objet Stats/PMI à l'aide de
StatsFactory.
- Créez une classe qui étend StatisticActions
public class MyStatisticsModule extends StatisticActions
- Déclarez les variables de compteur du type SPI*, telles que SPICountStatistc
et SPIBoundedRangeStatistic.
private SPICountStatistic numReqs;
private SPIBoundedRangeStatistic expensiveStat;
- Créez un groupe StatsGroup de type StatsGroup et une instance StatsInstance de type StatsInstance.
private static StatsGroup stocksStatisticsGroup = null;
private StatsInstance stocksStatistics = null;
MyStatisticsGroup =
StatsFactory.createStatsGroup("MyStats.Group", template, null);
MyStatistics =
StatsFactory.createStatsInstance("MyStats.Instance”,MyStatisticGroup,null,this);
Le modèle correspond au chemin dans l'application dans lequel se trouve le fichier XML. Par exemple :String template = "/com/stats/MyStats.xml";
- Une fois que les statistiques sont créées dans StatsInstance, statisticCreated
est appelé pour indiquer qu'une statistique est créée dans l'instance Stats.
Vous pouvez affecter les statistiques déclarées précédemment à la
statistique appropriée ; par exemple :
public void statisticCreated (SPIStatistic s) {
// Called when the Statistics are created in the Stats Instance
if (s.getId() == MyStats.NUMREQS)
{
numReqs = (SPICountStatistic)s; // Assign Statistic
}
}
- Définissez des méthodes que votre application va utiliser pour mettre à jour les statistiques personnalisées.
public void onRequestArrival(){
if (numReqs != null)
{
numReqs.increment(); // Increment/Decrement Statistic as per Req
}
}
- Vous pouvez également implémenter la méthode updateStaisticRequest
pour mettre à jour les statistiques sur une demande spécifique effectuée par le client ou toute autre application de contrôle.
public void updateStatisticOnRequest (int dataId) {
if (dataId == MyStats.expensiveStat)
{
expensiveStat.set(xxxxx);
}
}
Dans l'exemple b, dataId représente
l'ID de la la statistique qui doit être mise à jour.
- Mettez à jour votre application pour appeler les méthodes
(définies aux étapes précédentes) de manière appropriée.
- Accédez à l'application.
- Connectez Tivoli Performance Viewer et affichez les statistiques personnalisées.
Eviter les incidents: Lorsqu'une infrastructure PMI personnalisée est implémentée dans un
environnement de déploiement réseau, il est possible que vous ne puissiez pas afficher les compteurs de l'infrastructure PMI personnalisée du fait que le fichier XML Stats/PMI et le fichier de propriétés de bundle de ressources ne sont pas
visibles au chargeur de classe WebSphere Application Server. Le fichier Stats/PMI.xml
et le fichier de propriétés de bundle de ressources sont présents dans
l'application. Pour pouvoir afficher les compteurs de l'infrastructure PMI personnalisée, vous devez
placer le fichier Stats/PMI.xml et le fichier de propriétés de bundle de ressources
dans le chemin d'accès aux classes.
Pour que les comptes de l'infrastructure PMI personnalisée soient visibles, créez un fichier JAR avec la structure de fichier suivante du fichier XML Stats/PMI.xml et du fichier de propriétés
de bundle de ressources et en le plaçant dans le dossier
WAS_HOME\lib\ext.
Les compteurs de l'infrastructure PMI personnalisée sont alors visibles pour le chargeur de classe.
com/ibm/app/temp/tempstats.xml --- path of the Stats/PMI.xml
com/ibm/app/temp/resourcebundle.props --- path of the resource bundle property file
gotcha