Remarque : Vous pouvez consulter des informations détaillées sur ces classes dans le document JavaDocs pour l'agent. Les documents JavaDocs sont disponibles dans le répertoire LISA_HOME\doc.
Une transaction est un chemin de code exécuté par un ou plusieurs serveurs comme résultat d'une demande client. Une transaction est représentée par une arborescence associée à une racine du client initialisant la demande. Les noeuds de l'arborescence sont des objets com.itko.lisa.remote.transactions.TransactionFrame. Ces objets contiennent des informations concernant une classe, une méthode et des arguments appelés pendant le traitement du serveur. Les trames contiennent également des informations complémentaires, telles que la durée, l'heure de l'exécution et le thread dans lequel elle a eu lieu.
Une transaction peut être assimilée à une pile d'appel de méthode. L'une des différences réside dans le fait que les transactions traversent les limites des thread, des processus, ou même des ordinateurs. Autre différence, la pile contient toutes les méthodes impliquées dans l'exécution de code d'un thread, tandis que les transactions omettent certains niveaux et contiennent des trames uniquement pour des méthodes d'intérêt de leur choix. Ces méthodes sont également appelées méthodes interceptées.
Le principal moyen pour obtenir et utiliser des objets TransactionFrame s'effectue via des surcharges des API suivantes fournies par com.itko.lisa.remote.client.TransactionsClient, qui à leur tour peuvent être obtenues avec l'appel suivant : AgentClient.getInstance().getTransactionsClient().
/** * Démarre l'enregistrement de transactions * @param indique à l'agent de démarrer l'enregistrement. */ public void startXRecording(IAgentInfo info) throws JMSInvocationException; /** * Arrête l'enregistrement de transactions * @param indique à l'agent d'arrêter l'enregistrement. */ public void stopXRecording(IAgentInfo info) throws JMSInvocationException; /** * Lance le suivi de l'utilisation de socket sur le client à utiliser pour le rapprochement des transactions client et serveur. * Cet appel doit être effectué avant l'appel que nous ajoutons dans addClientTransaction. * @param global installation sur tous les sockets ou uniquement sur ce thread */ public void installSocketTracker(boolean global); /** * Arrête le suivi de l'utilisation de socket sur le client à utiliser pour le rapprochement des transactions client et serveur. * Cet appel doit être effectué après l'appel que nous ajoutons dans addClientTransaction. * @param global désinstallation sur tous les sockets ou uniquement sur ce thread */ public void uninstallSocketTracker(boolean global); /** * En tant que client, vous pouvez appeler cette méthode pour associer une arborescence de transactions à une nouvelle transaction cliente créée à l'aide * des paramètres spécifiés. * Remarque : Vous devez appeler installSocketTracker avant d'initialiser la transaction côté client que vous ajoutez ici. * De même, il est recommandé d'appeler uninstallSocketTracker après avoir terminé l'appel réseau. * @param stamp chaîne unique que vous pouvez utiliser ultérieurement pour identifier la transaction racine * (dans des appels getTransactions par exemple) * @param stepInfo chaîne lisible et conviviale qui indique l'action de la transaction (peut être nulle) * * @param args paramètres transmis par le client à la transaction (peut être vide) * @param result résultat de la transaction (peut être nul) * @param duration vue du client de la durée de la transaction */ public void addClientTransaction(String stamp, String stepInfo, Object[] args, Object result, long duration); /** Supprime toutes les transactions et les données dépendantes générées par ce client. */ public void clearTransactions(); /** * Obtient une liste non hiérarchique de TransactionFrames reçues à partir de tous les agents qui satisfont les critères de filtrage transmis en tant qu'arguments. * @param offset décalage * @param limit nombre maximum de résultats * @param category filtre par catégorie de transaction (consultez TranactionFrame.CATEGORY_XXX - 0 pour aucun filtre) * @param clazz filtre par nom de classe (nul ou "" pour aucun filtre) * @param method filtre par nom de méthode (nul ou "" pour aucun filtre) * @param minTime filtre par durée de trame supérieure à minTime * @return liste de trames TransactionFrames satisfaisant les critères fournis et classées par heure décroissante */ public List getTransactions(int offset, int limit, int category, String clazz, String method, int minTime); /** * Obtient une liste d'arborescences de transactions associées aux transactions spécifiées et satisfaisant les critères spécifiés * @param offset décalage * @param limit nombre maximum de résultats * @param stamps tableau de transactions de client racines - renvoie all si cet élément est vide. * @param minTime durée en dessous de laquelle les transactions sont nettoyées des résultats * @return ret liste d'arborescences de transactions correspondant aux critères et classées par heure décroissante */ public List getTransactionsTree(int offset, int limit, String[] stamps, int minTime)
Les paramètres vers ces API ne spécifient aucun Agent ni AgentInfo, car les transactions peuvent couvrir plusieurs agents.
Ces API renvoient des listes com.itko.lisa.remote.transactions.TransactionFrame (ou leurs arborescences) ; observez les données qu'elles contiennent :
/** Identificateur unique de cette trame */ public String getFrameId(); public void setFrameId(String frameId); /** ID de la trame parente de cette trame public String getParentId(); public void setParentId(String parentId); /** Identificateur partagé par toutes les trames appartenant à la même transaction (identique à l'ID de trame racine global) */ public String getTransactionId(); public void setTransactionId(String transactionId); /** Objet TransactionFrame parent */ public TransactionFrame getParent(); public void setParent(TransactionFrame parent); /** Liste d'objets TransactionFrame enfants */ public List getChildren(); public void setChildren(List children); /** Identificateur unique de l'agent dans lequel cette trame a été enregistrée */ public long getAgentGuid(); public void setAgentGuid(long agentGuid); /** Compteur croissant qui permet de classer les trames (l'heure peut ne pas être très précise) */ public long getOrdinal(); public void setOrdinal(long ordinal); /** Trames réseau entrantes ou sortantes -définissez ce paramètre pour indiquer l'adresse IP à partir de laquelle elles communiquent */ public String getLocalIP(); public void setLocalIP(String ip); /** Trames réseau entrantes ou sortantes. Définissez ce paramètre pour indiquer le port à partir duquel elles communiquent. */ public int getLocalPort(); public void setLocalPort(int port); /** Trames réseau entrantes ou sortantes -définissez ce paramètre pour indiquer l'adresse IP avec laquelle elles communiquent */ public String getRemoteIP(); public void setRemoteIP(String ip); /** Trames réseau entrantes ou sortantes -définissez ce paramètre pour indiquer le port avec lequel elles communiquent */ public int getRemotePort(); public void setRemotePort(int port); /** Nom du thread dans lequel cette trame a été enregistrée */ public String getThreadName(); public void setThreadName(String threadName); /** Nom de la classe ou de l'interface dans laquelle cette trame a été enregistrée (en fonction de la spécification d'interception). */ public String getClassName(); public void setClassName(String className); /** Nom de la classe de l'objet réel dans laquelle cette trame a été enregistrée */ public String getActualClassName(); /** Nom de la méthode dans laquelle cette trame a été enregistrée */ public String getMethod(); public void setMethod(String method); /** Signature de la méthode dans laquelle cette trame a été enregistrée */ public String getSignature(); public void setSignature(String signature); /** Représentation formatée de la méthode dans laquelle cette trame a été enregistrée */ public String getSource(); public void setSource(Object source); /** Représentation formatée des arguments pour la méthode dans laquelle cette trame a été enregistrée */ public String[] getArguments(); public void setArguments(Object[] arguments); /** Représentation formatée du résultat de la méthode dans laquelle cette trame a été enregistrée */ public String getResult(); public void setResult(Object result); /** Nombre de duplications de cette trame dans son parent */ public long getHits(); public void setHits(long hits); /** Heure du serveur lors de l'enregistrement de la trame */ public long getTime(); public void setTime(long time); /** Durée horloge d'exécution de cette trame */ public long getClockDuration(); public void setClockDuration(long clockDuration); /** Durée en termes d'UC d'exécution de cette trame */ public long getCpuDuration(); public void setCpuDuration(long cpuDuration); /**Représentation personnalisée de l'état associé à cette trame */ public String getState(); public void setState(Object state); /** Informations LEK formatées comme codées/décodées par la classe LEKEncoder */ public String getLekInfo(); public void setLekInfo(String lekInfo); /** Catégorie précalculée à laquelle cette trame appartient - consultez TransactionFrame.CATEGORY_XXX */ public int getCategory(); public void setCategory(int category); /** Combinaison associée par une expression OU au niveau du bit de divers informations internes - consultez TransactionFrame.FLAG_XXX */ public long getFlags(); public void setFlags(long flags);
|
Copyright © 2014 CA Technologies.
Tous droits réservés.
|
|