Projet CNAM – 2002/2003 Système automatique de Surveillance Documentation Javadoc, configuration du système Page 1 Projet CNAM – 2002/2003 Système automatique de Surveillance Résumé du document Documentation du projet Page 2 Projet CNAM – 2002/2003 Système automatique de Surveillance Tables des matières Chapter 1. Package sas.gui .............................................................................. 5 Class HelpdeskQueueListModel ............................................................................ 5 Synopsis .................................................................................................................... 5 Members .................................................................................................................... 6 Class MainTopicListModel ...................................................................................... 7 Synopsis .................................................................................................................... 7 Members .................................................................................................................... 8 Class SasMessageListCellRenderer ................................................................... 10 Synopsis .................................................................................................................. 10 Members .................................................................................................................. 11 Chapter 2. Package sas.mdc ......................................................................... 12 Class Bridge .............................................................................................................. 12 Synopsis .................................................................................................................. 12 Members .................................................................................................................. 12 Class BridgeToDatabase ....................................................................................... 14 Synopsis .................................................................................................................. 14 Members .................................................................................................................. 15 Class BridgeToHelpdesk ....................................................................................... 16 Synopsis .................................................................................................................. 16 Members .................................................................................................................. 16 Class BridgeToMail ................................................................................................. 17 Synopsis .................................................................................................................. 17 Members .................................................................................................................. 18 Class BridgeToMessageSender ........................................................................... 18 Synopsis .................................................................................................................. 18 Members .................................................................................................................. 19 Class BridgeToSms ................................................................................................. 20 Synopsis .................................................................................................................. 20 Members .................................................................................................................. 21 Chapter 3. Package sas.mds ......................................................................... 23 Configuration global du MDS ............................................................................... 23 Strucutre du fichier de configuration global ....................................................... 23 Class Controller........................................................................................................ 24 Synopsis .................................................................................................................. 24 Members .................................................................................................................. 25 Class DiskWatcher................................................................................................... 26 Synopsis .................................................................................................................. 26 Members .................................................................................................................. 27 Class LinuxDiskWatcher ........................................................................................ 27 Synopsis .................................................................................................................. 27 Members .................................................................................................................. 28 Class ParameterStatus ........................................................................................... 28 Page 3 Projet CNAM – 2002/2003 Système automatique de Surveillance Synopsis .................................................................................................................. 28 Members .................................................................................................................. 29 Class WatcherProcessor ....................................................................................... 29 Synopsis .................................................................................................................. 29 Members .................................................................................................................. 30 Interface Watcher ..................................................................................................... 31 Synopsis .................................................................................................................. 31 Members .................................................................................................................. 31 Chapter 4. Package sas.util ............................................................................ 33 Class HelpdeskQueueConnector ........................................................................ 34 Synopsis .................................................................................................................. 34 Members .................................................................................................................. 34 Class HelpdeskQueueReceiver ............................................................................ 36 Synopsis .................................................................................................................. 36 Members .................................................................................................................. 36 Class HelpdeskQueueSender ............................................................................... 38 Synopsis .................................................................................................................. 38 Members .................................................................................................................. 39 Class JndiConnector............................................................................................... 41 Synopsis .................................................................................................................. 41 Members .................................................................................................................. 42 Class MainTopicConnector ................................................................................... 46 Synopsis .................................................................................................................. 46 Members .................................................................................................................. 46 Class MainTopicReceiver ...................................................................................... 48 Synopsis .................................................................................................................. 48 Members .................................................................................................................. 49 Class MainTopicSender ......................................................................................... 51 Synopsis .................................................................................................................. 51 Members .................................................................................................................. 52 Class SasMessage ................................................................................................... 54 Synopsis .................................................................................................................. 54 Members .................................................................................................................. 55 Interface LogType .................................................................................................... 56 Synopsis .................................................................................................................. 57 Members .................................................................................................................. 57 Interface SasMessageType ................................................................................... 58 Synopsis .................................................................................................................. 58 Members .................................................................................................................. 58 Page 4 Projet CNAM – 2002/2003 Système automatique de Surveillance Chapter 1. Package sas.gui Class HelpdeskQueueListModel Cette classe maintient une liste dynamique d'objet SasMessage, alimentée par la file de message HelpdeskQueue. Elle dérive de la classe sas.util.HelpdeskQueueReceiver et implémente la classe javax.swing.ListModel, permettant ainis d'être connectée aux composants de type javax.swing.JList. Synopsis public class HelpdeskQueueListModel extends HelpdeskQueueReceiver implements ListModel { // Private Fields private Vector listenerList; private Vector sasMessageList; // Public Constructors public HelpdeskQueueListModel(); // Public Methods public void newSasMessage(sas.util.SasMessage message); public void addListDataListener(javax.swing.event.ListDataListener listener); public void removeListDataListener( javax.swing.event.ListDataListener listener); public int getSize(); public Object getElementAt(int index); public void removeItem(int index); } Additional Information See Also sas.util.HelpdeskQueueReceiver HelpdeskQueueReceiver>] Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.HelpdeskQueueConnector | sas.util.HelpdeskQueueReceiver | Page 5 [Class Projet CNAM – 2002/2003 Système automatique de Surveillance Inheritance Path sas.gui.HelpdeskQueueListModel Members Field listenerList Synopsis: private java.util.Vector listenerList Liste dynamique interne d'objet java.swing.ListDataListener. Field sasMessageList Synopsis: private java.util.Vector sasMessageList Liste dynamique interne d'objets SasMessage. Method addListDataListener(ListDataListener) Synopsis: public void addListDataListener( javax.swing.event.ListDataListener listener); Parameters listener - un objet ListDataListener Ajoute un ListDataListener à la liste interne. Method getElementAt(int) Synopsis: public Object getElementAt(int index); Parameters index - le rang de l'objet voulu return - un objet du type SasMessage Retourne un élément de la liste interne des objets SasMessage. Method getSize() Synopsis: public int getSize(); Parameters return - size la taille de la liste interne Page 6 Projet CNAM – 2002/2003 Système automatique de Surveillance Retour le nombre d'éléments dans la liste interne des objets SasMessage. Method newSasMessage(SasMessage) Synopsis: public void newSasMessage(sas.util.SasMessage message); Parameters message - un nouvel objet SasMessage Méthode appelée lors de la réception d'un message depuis la file HelpdeskQueue. Elle se charge d'ajouter le nouveau message dans la liste interne des objets SasMessage, puis avertit de se changement d'état tous les ListDataListener qui lui sont associés. Method removeItem(int) Synopsis: public void removeItem(int index); Parameters index - rang de l'objet à supprimer ans la liste Supprime un objet de la liste interne des objets SasMessage. Method removeListDataListener(ListDataListener) Synopsis: public void removeListDataListener( javax.swing.event.ListDataListener listener); Parameters listener - un objet ListDataListener Supprime un ListDataListener de la liste interne. Class MainTopicListModel Cette classe maintient une liste dynamique d'objet SasMessage, alimentée par la file de message MainTopic. Elle dérive de la classe sas.util.MainTopicReceiver et implémente la classe javax.swing.ListModel, permettant ainis d'être connectée aux composants de type javax.swing.JList. Synopsis public class MainTopicListModel extends MainTopicReceiver // Private Fields private Vector listenerList; private Vector sasMessageList; // Public Constructors public MainTopicListModel(); Page 7 implements ListModel { Projet CNAM – 2002/2003 Système automatique de Surveillance // Public Methods public void newSasMessage(sas.util.SasMessage message); public void addListDataListener(javax.swing.event.ListDataListener listener); public void removeListDataListener( javax.swing.event.ListDataListener listener); public int getSize(); public Object getElementAt(int index); public void removeItem(int index); } Additional Information See Also sas.util.MainTopicReceiver [Class MainTopicReceiver>] Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.MainTopicConnector | sas.util.MainTopicReceiver | sas.gui.MainTopicListModel Members Field listenerList Synopsis: private java.util.Vector listenerList Liste dynamique interne d'objet java.swing.ListDataListener. Field sasMessageList Synopsis: private java.util.Vector sasMessageList Liste dynamique interne d'objets SasMessage. Method addListDataListener(ListDataListener) Synopsis: public void addListDataListener( javax.swing.event.ListDataListener listener); Page 8 Projet CNAM – 2002/2003 Système automatique de Surveillance Parameters listener - un objet ListDataListener Ajoute un ListDataListener à la liste interne. Method getElementAt(int) Synopsis: public Object getElementAt(int index); Parameters index - le rang de l'objet voulu return - un objet du type SasMessage Retourne un élément de la liste interne des objets SasMessage. Method getSize() Synopsis: public int getSize(); Parameters return - size la taille de la liste interne Retour le nombre d'éléments dans la liste interne des objets SasMessage. Method newSasMessage(SasMessage) Synopsis: public void newSasMessage(sas.util.SasMessage message); Parameters message - un nouvel objet SasMessage Méthode appelée lors de la réception d'un message depuis la file MainTopic. Elle se charge d'ajouter le nouveau message dans la liste interne des objets SasMessage, puis avertit de se changement d'état tous les ListDataListener qui lui sont associés. Method removeItem(int) Synopsis: public void removeItem(int index); Parameters Page 9 Projet CNAM – 2002/2003 Système automatique de Surveillance Parameters index - rang de l'objet à supprimer ans la liste Supprime un objet de la liste interne des objets SasMessage. Method removeListDataListener(ListDataListener) Synopsis: public void removeListDataListener( javax.swing.event.ListDataListener listener); Parameters listener - un objet ListDataListener Supprime un ListDataListener de la liste interne. Class SasMessageListCellRenderer Classe utilisée par les composants du type javax.swing.JList afin d'afficher le contenu d'une liste d'objet SasMessage. Elle dérive de l'objet javax.swing.JLabel et implémente l'interface javax.swing.ListCellRenderer. Synopsis public class SasMessageListCellRenderer extends JLabel implements ListCellRenderer { // Public Constructors public SasMessageListCellRenderer(); // Public Methods public Component getListCellRendererComponent(javax.swing.JList list, java.lang.Object value, int index, boolean isSelected, boolean cellHasFocus); } Inheritance Path java.lang.Object | java.awt.Component | java.awt.Container | javax.swing.JComponent Page 10 Projet CNAM – 2002/2003 Système automatique de Surveillance Inheritance Path | javax.swing.JLabel | sas.gui.SasMessageListCellRenderer Members Constructor SasMessageListCellRenderer() Synopsis: public SasMessageListCellRenderer(); Le constructeur de la classe initialise quelques valeurs internes comme l'opacité du composant graphique affichant les objets SasMessage. Method getListCellRendererComponent(JList, Object, int, boolean, boolean) Synopsis: list, public Component getListCellRendererComponent(javax.swing.JList java.lang.Object value, int index, boolean isSelected, boolean cellHasFocus); Cette méthode renvoie un objet du type javax.swing.JLabel initialisé de façon à afficher un texte pertinent relatif aux objets SasMessage. Page 11 Projet CNAM – 2002/2003 Système automatique de Surveillance Chapter 2. Package sas.mdc Class Bridge Classe de base pour tous les objets de type pont filtrant. Elle fournit deux méthodes sas.mdc.Bridge.startBridge [ Method startBridge(java.lang.String, java.lang.String)] et sas.mdc.Bridge.stopBridge [ Method stopBridge()] permettant de contrôler le démarrage et l'arrêt des ponts. Une troisième méthode permet d'associer des objets DefaultListModel qui seront mis à jour à chaques fois que le pont reçoit un message. Synopsis public abstract class Bridge extends MainTopicReceiver { // Private Fields private Vector incomingMessageListModel; // Public Constructors public Bridge(); // Public Methods public void newSasMessage(sas.util.SasMessage message); public boolean startBridge(java.lang.String durableName, java.lang.String filter); public boolean stopBridge(); public void addIncomingMessageListModel( javax.swing.DefaultListModel listModel); abstract public void messageReceivedByBridge(sas.util.SasMessage message); } Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.MainTopicConnector | sas.util.MainTopicReceiver | sas.mdc.Bridge Members Field incomingMessageListModel Synopsis: private java.util.Vector incomingMessageListModel Page 12 Projet CNAM – 2002/2003 Système automatique de Surveillance Liste interne servant à stocker les objet DefaultListModel devant être mis à jour. Method addIncomingMessageListModel(DefaultListModel) Synopsis: public void addIncomingMessageListModel( javax.swing.DefaultListModel listModel); Parameters listModel - une objet DefaultListModel à mettre à jour Additional Information See Also sas.util.SasMessage [Class SasMessage>] Ajoute un DefaultListModel à la liste interne des DefaultListModel qui doivent être mis à jour lorsque le pont traite un message. Les objets stockés dans ces DefaultListModel sont de type SasMessage. Method messageReceivedByBridge(SasMessage) Synopsis: abstract public void messageReceivedByBridge( sas.util.SasMessage message); Parameters message - l'objet SasMessage à traiter Additional Information See Also sas.util.SasMessage [Class SasMessage>] Méthode abstraite appelé lorsque le pont a reçu et traité un nouveau message. Les classe filles de cette classe doivent implémenter cette méthode si elle désire effectuer une tâche avec ce nouveau message (envoi du message par mail ou SMS par exemple) Method newSasMessage(SasMessage) Synopsis: public void newSasMessage(sas.util.SasMessage message); Parameters message - un nouvel objet SasMessage Page 13 Projet CNAM – 2002/2003 Système automatique de Surveillance Additional Information See Also sas.util.MainTopicReceiver [Class MainTopicReceiver>] Méthode appelé par l'objet MainTopicReceiver lorsqu'un nouveau message est disonible dans la file MainTopic. Elle assure le prétraitement du message entrant. Elle ne devrait pas &ecirctre surchargé par les classes filles. Method startBridge(String, String) Synopsis: public boolean startBridge(java.lang.String durableName, java.lang.String filter); Parameters durableName - nom de l'abonné durable du pont filter - selecteur de message du pont return - true si le pont est prêt Se charge de démarrer le MainTopicReceiver dont les ponts filtrants héritent. Method stopBridge() Synopsis: public boolean stopBridge(); Parameters return - true si le pont est correctement arrêtté Stop le MainTopicReceiver dont les pont filtrants héritent. Class BridgeToDatabase Pont filtrant vers le système de base de donnée. Repose sur l'objet externe DatabaseWriter. Synopsis public class BridgeToDatabase extends Bridge { // Public Constructors public BridgeToDatabase(); // Public Methods public void messageReceivedByBridge(sas.util.SasMessage message); } Additional Information Page 14 Projet CNAM – 2002/2003 Système automatique de Surveillance Additional Information See Also sas.extern.DatabaseWriter Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.MainTopicConnector | sas.util.MainTopicReceiver | sas.mdc.Bridge | sas.mdc.BridgeToDatabase Members Method messageReceivedByBridge(SasMessage) Synopsis: public void messageReceivedByBridge(sas.util.SasMessage message); Parameters message - l'objet SasMessage à archiver Additional Information See Also sas.extern.DatabaseWriter Assure l'archivage du message reçu dans la base de données du système. Repose sur l'objet externe sas.extern.DatabaseWriter. Page 15 Projet CNAM – 2002/2003 Système automatique de Surveillance Class BridgeToHelpdesk Pont filtrant vers le la file de message du Helpdesk. Se charge de filtrer les messages de niveau égal à 7 et les transmet dans la HelpdeskQueue. Synopsis public class BridgeToHelpdesk extends Bridge { // Private Fields private HelpdeskQueueSender helpdeskSender; // Public Constructors public BridgeToHelpdesk(); // Public Methods public void messageReceivedByBridge(sas.util.SasMessage message); } Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.MainTopicConnector | sas.util.MainTopicReceiver | sas.mdc.Bridge | sas.mdc.BridgeToHelpdesk Members Field helpdeskSender Synopsis: private sas.util.HelpdeskQueueSender helpdeskSender Objet sas.util.HelpdeskQueueSender utilisé pour poster les messages reçus de la file MainTopic dans la queue HelpdeskQueue Method messageReceivedByBridge(SasMessage) Synopsis: public void messageReceivedByBridge(sas.util.SasMessage message); Page 16 Projet CNAM – 2002/2003 Système automatique de Surveillance Parameters message - l'objet asMessage à retransmettre Assure l'envoi du message reçu dans la HelpdeskQueue. Class BridgeToMail Pont filtrant vers le système de Mail. Repose sur l'objet externe MailSender. Synopsis public class BridgeToMail extends BridgeToMessageSender { // Private Fields private Vector mailDestinationList; // Public Constructors public BridgeToMail(); // Public Methods public void messageReceivedByBridge(sas.util.SasMessage message); public void newDestinationList(java.lang.String[] destinationList); } Additional Information See Also sas.extern.MailSender Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.MainTopicConnector | sas.util.MainTopicReceiver | sas.mdc.Bridge | Page 17 Projet CNAM – 2002/2003 Système automatique de Surveillance Inheritance Path sas.mdc.BridgeToMessageSender | sas.mdc.BridgeToMail Members Field mailDestinationList Synopsis: private java.util.Vector mailDestinationList Liste interne des adresses mails de destination. Method messageReceivedByBridge(SasMessage) Synopsis: public void messageReceivedByBridge(sas.util.SasMessage message); Parameters message - l'objet SasMessage à envoyer Transmet le message en paramètre à la liste interne des destinataires. Method newDestinationList(String[]) Synopsis: public destinationList); void newDestinationList(java.lang.String[] Parameters destinationList - la nouvelle liste des destinataires mail Met à jour la liste interne des destinataires mail avec la liste d'adresses fournis en paramètre. Class BridgeToMessageSender Classe de base pour les ponts filtrants devant expédier des messages à une liste de destinataires. Elle propose une méthode pour ajouter des objets DefaultListModel qui seront mis à jour à chaques fois que le pont reçoit un message de type LogType.CONF contenant une liste de destinataire. Une autre méthode abstraite y est aussi définit, celle-ci étant appelée à chaques fois que le pont reçoit une nouvelle liste de destinataire. Synopsis public abstract class BridgeToMessageSender extends Bridge Page 18 { Projet CNAM – 2002/2003 Système automatique de Surveillance // Private Fields private Vector destinationListModel; // Public Constructors public BridgeToMessageSender(); // Public Methods public void newSasMessage(sas.util.SasMessage message); public void addIncomingDestListModel(javax.swing.DefaultListModel listModel); abstract public void newDestinationList(java.lang.String[] destinationList); } Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.MainTopicConnector | sas.util.MainTopicReceiver | sas.mdc.Bridge | sas.mdc.BridgeToMessageSender Members Field destinationListModel Synopsis: private java.util.Vector destinationListModel Liste interne servant à stocker les objet DefaultListModel devant être mis à jour lors de la réception d'une nouvelle liste de destinataires. Method addIncomingDestListModel(DefaultListModel) Synopsis: public void addIncomingDestListModel( javax.swing.DefaultListModel listModel); Parameters Page 19 Projet CNAM – 2002/2003 Système automatique de Surveillance Parameters listModel - une objet DefaultListModel à mettre à jour Ajoute un DefaultListModel à la liste interne des DefaultListModel qui doivent être mis à jour lorsque le pont reçoit une nouvelle liste de destinataires. Les objets stockés dans ces DefaultListModel sont de type String. Method newDestinationList(String[]) Synopsis: abstract public void newDestinationList( java.lang.String[] destinationList); Parameters destinationList - une liste d'objet String Appelée lorsque une nouvelle liste de destinataires est reçt par le pont. Elle reçoit en paramètre un tableau d'objet String contenant les destinataires. Method newSasMessage(SasMessage) Synopsis: public void newSasMessage(sas.util.SasMessage message); Contrôle si le message reçu est du type MessageType.CONF, et si c'est le cas, traîte le message comme tel. Sinon, appele la mé newSasMessage de la classe parent. Class BridgeToSms Pont filtrant vers le système de SMS. Repose sur un objet externe SmsSender. Synopsis public class BridgeToSms extends BridgeToMessageSender { // Private Fields private Vector smsDestinationList; // Public Constructors public BridgeToSms(); // Public Methods public void messageReceivedByBridge(sas.util.SasMessage message); public void newDestinationList(java.lang.String[] destinationList); } Additional Information See Also sas.extern.SmsSender Inheritance Path java.lang.Object Page 20 Projet CNAM – 2002/2003 Système automatique de Surveillance Inheritance Path | sas.util.JndiConnector | sas.util.MainTopicConnector | sas.util.MainTopicReceiver | sas.mdc.Bridge | sas.mdc.BridgeToMessageSender | sas.mdc.BridgeToSms Members Field smsDestinationList Synopsis: private java.util.Vector smsDestinationList Liste interne des numéros de téléphone pour l'envoi de SMS. Method messageReceivedByBridge(SasMessage) Synopsis: public void messageReceivedByBridge(sas.util.SasMessage message); Parameters message - l'objet SasMessage à envoyer Transmet le message en paramètre à la liste interne des destinataires. Method newDestinationList(String[]) Synopsis: public destinationList); void Page 21 newDestinationList(java.lang.String[] Projet CNAM – 2002/2003 Système automatique de Surveillance Parameters destinationList - la nouvelle liste des destinataires mail Met à jour la liste interne des destinataires mail avec la liste d'adresses fournis en paramètre. Page 22 Projet CNAM – 2002/2003 Système automatique de Surveillance Chapter 3. Package sas.mds Ce package regroupe l'ensemble des classes du MDS. Un MDS est basé sur un objet Controller, qui instancie les Watcher et WatcherProcessor nécessaire à son fonctionnement. Un MDS se configure en deux étapes. La première, en paramètrant son fichier de configuration global, puis, en configurant les Watcher qui lui sont associés. Configuration global du MDS Le fichier de configuration global par défaut se nomme controller.properties et se trouve dans le répertoire config de l'application SAS Strucutre du fichier de configuration global Paramètre Commentaires Status watcher-configfile- Répertoire contenant les folder configuration des Watchers fichiers de Obligatoire controller-lock-file Nom du fichier créé lorsque le MDS Obligatoire démarre controller-run-file Nom de fichier à créé pour arrêter le MDS controller-senderid Nom utilisé comme messages par le MDS expéditeur Obligatoire des Obligatoire Configuration des Wacther La configuration des Watcher des MDS se fait grâce à des fichiers de configuration présent dans le répertoire watcher durépertoire de configuration config de l'application SAS. Ces fichier de configuration contiennent les paramètres nécessaire au bon fonctionnement des Watcher. Structure des fichiers de configuration des Watcher Chaques Watcher doit avoir son propre fichier de configuration, dand le répertoire des fichiers de configuration des Wactcher. Ces fichier doivent contenir au mois trois paramètres, le nom de la classe du Watcher (exemple: sas.mds.LinuxDiskWatcher), la période de contrôle du paramètre système à surveiller, et le nombre de variable à transmettre au Watcher. Si ce nombre de variables est supérieur à 0, doivent suivre autant d'initialisation de ces variables. Voici pour exemple le contenu du fichier de configuration d'un LinuxDiskWatcher: # Class name class-name = sas.mds.LinuxDiskWatcher # Polling interval Page 23 Projet CNAM – 2002/2003 Système automatique de Surveillance polling-interval = 2 # Class parameters nb-parameters = 3 parameter-value-1 = /dev/hda3 parameter-value-2 = 70 parameter-value-3 = 80 On voit que ce Watcher nécessite 3 variables: la première est le nom du disque à surveiller, la deuxième est la limite basse, et la troisième la limite haute. Enfonction de l'occupation du disque /dev/hda3, un message d'avertissement ou d'alarme est émis. Class Controller Classe principale d'un MDS, elle se charge d'ordonancer l'ensemble d'un MDS (ses watcher, ses gestionnaires de watcher). Synopsis public class Controller extends MainTopicSender { // Package Fields final static int SLEEPING_TIME; // Private Fields private File lockFile; private File runFile; private Vector watcherProcessorList; // Public Constructors public Controller(); public Controller(java.lang.String configFileName); // Public Methods public void startController(); public void stopController(); // Private Methods private void loadWatcherProcessorList(); private void initWatcherProcessor(sas.mds.Watcher watcher, int pollingInterval); private void loopController(); } Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.MainTopicConnector | sas.util.MainTopicSender Page 24 Projet CNAM – 2002/2003 Système automatique de Surveillance Inheritance Path | sas.mds.Controller Members Constructor Controller() Synopsis: public Controller(); Initialise l'objet à partir du fichier de configuration par controller.properties. Constructor Controller(String) Synopsis: public Controller(java.lang.String configFileName); Parameters configFileName - un nom de fichier de configuration Initialise l'objet à partir du fichier de configuration transmis en paramètre. Field lockFile Synopsis: private java.io.File lockFile Objet pointant sur le lock-file de la classe Field runFile Synopsis: private java.io.File runFile Objet pointant sur le running-file de la classe Field SLEEPING_TIME Synopsis: final static int SLEEPING_TIME Période interne utilisée dans la boucle principale de la classe Field watcherProcessorList Synopsis: private java.util.Vector watcherProcessorList Liste interne de WatcherProcessor Page 25 défaut: Projet CNAM – 2002/2003 Système automatique de Surveillance Method initWatcherProcessor(Watcher, int) Synopsis: private void initWatcherProcessor(sas.mds.Watcher watcher, int pollingInterval); Parameters watcher - l'objet Watcher associé au WatcherProcessor pollingInterval - période du WatcherProcessor Inititalise un WatcherProcessor. Method loadWatcherProcessorList() Synopsis: private void loadWatcherProcessorList(); Charge les différents watchers présent dans le répertoire de configuration des watchers,les initialise et construit avec la liste interne des WatcherProcessor. Method loopController() Synopsis: private void loopController(); Démarre la boucle principale de l'objet Controller. Se charge de parcourir périodiquement la liste interne des WatcherProcessor, de les intérroger sur l'état des paramètres qu'ils surveillent, puis de publier des messages d'info dans la file principal. Method startController() Synopsis: public void startController(); Démarre l'objet Controller. Ceci déclenche l'appel sas.mds.Controller.loopController [ Method loopController()]. à la fonction Method stopController() Synopsis: public void stopController(); Arrête l'objet Controller. Attention, cette méthode fait appel à la fonction System.exit(0) pour quitter le programme. Class DiskWatcher Classe de base pour des watcher dédié &agrave la surveillance de disque dur. Synopsis public class DiskWatcher implements Watcher { // Protected Fields protected String diskToWatch; Page 26 Projet CNAM – 2002/2003 Système automatique de Surveillance // Private Fields private int hardLimit; private int softLimit; // Public Constructors public DiskWatcher(); // Public Methods public boolean initWatcher(java.lang.String[] paramList); public ParameterStatus getParameterStatus(); public int getDiskUsage(); } Inheritance Path java.lang.Object | sas.mds.DiskWatcher Members Field diskToWatch Synopsis: protected java.lang.String diskToWatch Nom du disque à surveiller Field hardLimit Synopsis: private int hardLimit Limite hard d'occupation du disque Field softLimit Synopsis: private int softLimit Limite soft d'occupation du disque Method getDiskUsage() Synopsis: public int getDiskUsage(); Renvoie la l'occupation du disque. Cette classe renvoie toujours 0 comme occupation disque. Cette méthode doit être surclassée par les classes filles. Class LinuxDiskWatcher Classe permettent de surveiller un disque sour un environnement Linux Synopsis public class LinuxDiskWatcher extends DiskWatcher // Public Constructors public LinuxDiskWatcher(); Page 27 { Projet CNAM – 2002/2003 Système automatique de Surveillance // Public Methods public int getDiskUsage(); } Inheritance Path java.lang.Object | sas.mds.DiskWatcher | sas.mds.LinuxDiskWatcher Members Method getDiskUsage() Synopsis: public int getDiskUsage(); Retourne l'occupation du disque désigné par le premier paramètre du fichier de configuration. Class ParameterStatus Objet utilisé pour communiquer le status des paramètres surveillés entre les Watcher et les WatcherProcessor. Synopsis public class ParameterStatus { // Private Fields private String statusComment; private int statusLevel; // Public Constructors public ParameterStatus(); public ParameterStatus(int level, java.lang.String comment); // Public Methods public void setStatusLevel(int level); public void setComment(java.lang.String comment); public int getStatusLevel(); public String getStatusComment(); } Inheritance Path java.lang.Object | sas.mds.ParameterStatus Page 28 Projet CNAM – 2002/2003 Système automatique de Surveillance Members Constructor ParameterStatus() Synopsis: public ParameterStatus(); Initialise l'objet avec un niveau 1 et un commentaire nul par défaut. Constructor ParameterStatus(int, String) Synopsis: public ParameterStatus(int level, java.lang.String comment); Parameters level - niveau de gravité comment - commentaire associé Initialise l'objet avec les paramètres transmins. Field statusComment Synopsis: private java.lang.String statusComment Commentaire associé au problème Field statusLevel Synopsis: private int statusLevel Niveau de gravité du problème Class WatcherProcessor Cette classe permet d'initialiser des objets WatcherProcessor capables de piloter des objet Watcher. Ces objet WactherProcessor font l'interface entre l'objet principal d'un MDS, le Controller, et les objet Watcher associés au Controller. Synopsis class WatcherProcessor { // Private Fields private int pollingInterval; private int totalElapsedTime; private Watcher watcher; private String watcherUserId; // Package Private Constructors WatcherProcessor(); // Public Methods public void initWatcherProcessor(sas.mds.Watcher watcher, int pollingInterval, java.lang.String watcherId); public SasMessage getMessage(int elapsedTime); } Page 29 Projet CNAM – 2002/2003 Système automatique de Surveillance Additional Information See Also sas.mds.Controller [Class [Interface Watcher>] Controller>], sas.mds.Watcher Inheritance Path java.lang.Object | sas.mds.WatcherProcessor Members Field pollingInterval Synopsis: private int pollingInterval Période d'attente entre deux test du paramètre à surveiller. Field totalElapsedTime Synopsis: private int totalElapsedTime Compteur de temps total écoulé entre le dernier envoie d'un message SAS et de l'appel courant à la méthode sas.mds.WatcherProcessor.getMessage [ Method getMessage(int)]. Field watcher Synopsis: private sas.mds.Watcher watcher Pointeur sur une référence du watcher. Field watcherUserId Synopsis: private java.lang.String watcherUserId Sender ID utilisé dans les messages SAS retournés par le watcher processor Method getMessage(int) Synopsis: public SasMessage getMessage(int elapsedTime); Parameters return - un objet SasMessage Page 30 Projet CNAM – 2002/2003 Système automatique de Surveillance Retourne un objet SasMessage relatif au paramètre surveillé. Method initWatcherProcessor(Watcher, int, String) Synopsis: public void initWatcherProcessor(sas.mds.Watcher watcher, int pollingInterval, java.lang.String watcherId); Parameters watcher - un objet Watcher pollInterval - période entre deux appel au watcher WatcherId - Prépare la classe à contrôler un paramètre du système surveillé. Interface Watcher Interface permettant l'implémentation de nouveau modules de contrôle indépendant du code principal de l'application SAS. Synopsis interface Watcher { // Public Methods public boolean initWatcher(java.lang.String[] paramList); public ParameterStatus getParameterStatus(); } Inheritance Path sas.mds.Watcher Members Method getParameterStatus() Synopsis: public ParameterStatus getParameterStatus(); Parameters return - un objet ParameterStatus envoie le status du paramètre système surveillé. Method initWatcher(String[]) Synopsis: public boolean initWatcher(java.lang.String[] paramList); Page 31 Projet CNAM – 2002/2003 Système automatique de Surveillance Parameters paramList - liste de paramètres Initialise le watcher avec une liste de paramètres Page 32 Projet CNAM – 2002/2003 Système automatique de Surveillance Chapter 4. Package sas.util Classes de base du système SAS. Ce package regroupe l'ensemble des classes de bases utilisées dans le développement du système SAS. Ces classes trouvent leurs paramètres dans un unique fichier de configuration, le fichier sas.properties situé par défaut dans le sous répertoire config du répertoire principal SAS, respectant le format nécessaire aux objet Properties de Java Description des paramètres du fichiers sas.properties Paramètre Commentaires Status jndi-serverprotocol Dépend de la configuration du serveur Obligatoire JNDI (rmi,tcp,...) jndi-server-name Hostname du serveur JNDI Obligatoire jndi-server-port Numéro du port du serveur JNDI Obligatoire jndi-server-path Chemin du serveur JNDI. Pas utilisé en Obligatoire mode unifié topic-connectionfactory Dépend de la configuration du serveur Obligatoire OpenJMS queue-connectionfactory Dépend de la configuration du serveur Obligatoire OpenJMS jms-user-id Le nom d'utilisateur JMS, est aussi utilisé Obligatoire pour identifier l'expéditeur par défaut des messages jms-user-password Le mot de passe du jms-userid. Pas utilisé Optionnel pour l'instant main-topic-name Dépend de la configuration du serveur Obligatoire OpenJMS helpdesk-queuename Dépend de la configuration du serveur Obligatoire OpenJMS initial-contextmode Si la valeur de ce paramè est &agrave Optionnel unified, le système initialise son context JNDI de avec l'objet unifié org.exolab.jms.jndi.InitialContextFactory, disponible avec OpenJMS >= 0.7.5 Page 33 Projet CNAM – 2002/2003 Système automatique de Surveillance Class HelpdeskQueueConnector Cette classe assure l'établissement d'une connexion vers une queue de message du serveur OpenJMS. Le nom de la file de message, le nom JNDI de la fabrique de connexion et le nom de l'utilisateur sont récupérés dans le fichier de configuration du package. Synopsis class HelpdeskQueueConnector extends JndiConnector { // Private Fields private QueueConnection jmsConnection; // Package Private Constructors HelpdeskQueueConnector(); // Public Methods public QueueConnection getConnection(); // Protected Methods protected QueueConnection openConnection(); protected void closeConnection(); // Private Methods private QueueConnection jmsConnect(java.lang.String factoryName, java.lang.String username, java.lang.String password); } Additional Information See Also sas.util [Chapter 4>] Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.HelpdeskQueueConnector Members Field jmsConnection Synopsis: private QueueConnection jmsConnection Variable interne de type QueueConnection destinée à conserver une référence sur la connexion JMS créée par la méthode sas.util.HelpdeskQueueConnector.jmsConnect [ Method jmsConnect(java.lang.String, java.lang.String, java.lang.String)]. Page 34 Projet CNAM – 2002/2003 Système automatique de Surveillance Method closeConnection() Synopsis: protected void closeConnection(); Termine la connexion au serveur OpenJMS, ouverte avec l'appel de la méthode sas.util.HelpdeskQueueConnector.openConnection [ Method openConnection()]. Method getConnection() Synopsis: public QueueConnection getConnection(); Parameters une référence sur la variable interne sas.util.HelpdeskQueueConnector.jmsConnection [ Field jmsConnection>] de type QueueConnection return Méthode d'accès à la variable sas.util.HelpdeskQueueConnector.jmsConnection [ Field jmsConnection]. interne Method jmsConnect(String, String, String) Synopsis: private QueueConnection jmsConnect(java.lang.String factoryName, java.lang.String username, java.lang.String password); Parameters factoryName - le nom JNDI de la fabrique de connexion username - le nom d'utilisateur à utiliser pour se connecter password - le mot de passe de l'utilisateur return - un objet QueueConnection Etablit la connexion avec le serveur OpenJMS. Method openConnection() Synopsis: protected QueueConnection openConnection(); Parameters return - un objet QueueConnection Récupère le nom de la fabrique de connexion et l'utilisateur local dans le fichier de configuration du package et se connecte au serveur JMS à l'aide de la méthode Page 35 Projet CNAM – 2002/2003 Système automatique de Surveillance sas.util.HelpdeskQueueConnector.jmsConnect [ Method jmsConnect(java.lang.String, java.lang.String, java.lang.String)]. Repose sur les paramètres: • topic-connection-factory • jms-user-id • jms-user-password Class HelpdeskQueueReceiver Cette classe se charge d'écouter la queue du Helpdesk et encapsule les messages reçus dans des instances de l'objet sas.util.SasMessage [ Class SasMessage]. Elle a la possibilité de filtrer les messages en fonction des critères propres aux sas.util.SasMessage [ Class SasMessage] Synopsis public abstract class HelpdeskQueueReceiver extends HelpdeskQueueConnector // Private Fields private QueueReceiver receiver; private QueueSession session; // Public Constructors public HelpdeskQueueReceiver(); // Public Methods public void onMessage(Message message); public void startListener(); public void startListener(java.lang.String filter); public void stopListener(); abstract public void newSasMessage(sas.util.SasMessage message); // Private Methods private void initSession(); private void initReceiver(java.lang.String filter); } Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.HelpdeskQueueConnector | sas.util.HelpdeskQueueReceiver Members Field receiver Synopsis: private QueueReceiver receiver Page 36 { Projet CNAM – 2002/2003 Système automatique de Surveillance Variable interne référencant l'objet QueueReceiver de la classe Field session Synopsis: private QueueSession session Variable interne référencant l'objet QueueSession de la classe. Method initReceiver(String) Synopsis: private void initReceiver(java.lang.String filter); Parameters filter - la valeur du sélecteur de message Initialise un receiver à l'aide de la session créée au préalable et conserve une référence dans la variable interne sas.util.HelpdeskQueueReceiver.receiver [ Field receiver]. Si le param&egrave filter n'est pas égal à null, sa valeur est utilisée comme sélecteur de message. Repose sur le paramètre: • main-topic-name Method initSession() Synopsis: private void initSession(); Initialise une session à l'aide de la connexion créée par l'objet parent et conserve une référence dans la variable interne sas.util.HelpdeskQueueReceiver.session [ Field session]. Method newSasMessage(SasMessage) Synopsis: abstract public void newSasMessage(sas.util.SasMessage message); Parameters message - un objet SasMessage représentant le message reçu Méthode appelée à la réception d'un nouveau message. Method onMessage(Message) Synopsis: public void onMessage(Message message); Appelée lors de la réception d'un nouveau message. Appele la methode sas.util.HelpdeskQueueReceiver.newSasMessage [ Method newSasMessage(sas.util.SasMessage)] Page 37 Projet CNAM – 2002/2003 Système automatique de Surveillance Method startListener() Synopsis: public void startListener(); Additional Information See Also sas.util.HelpdeskQueueReceiver.startListener startListener(java.lang.String)>] [Method Initialise le récepteur de message sans sélecteur de messages. Cete méthode fait appel au à la méthode sas.util.HelpdeskQueueReceiver.startListener [ Method startListener(java.lang.String)] en mettant le filter à null. Method startListener(String) Synopsis: public void startListener(java.lang.String filter); Additional Information See Also sas.util.HelpdeskQueueReceiver.initReceiver initReceiver(java.lang.String)>] [Method Initialise le récepteur de message avec ou sans sélecteur de messages. L'initialisation se fait d'abord en créant une session grâce à la méthode sas.util.HelpdeskQueueReceiver.initSession [ Method initSession()], puis, en faisant appel à la méthode sas.util.HelpdeskQueueReceiver.initReceiver [ Method initReceiver(java.lang.String)] en lui transmettant la valeur du paramètre filter. Method stopListener() Synopsis: public void stopListener(); Cette méthode arrête l'écoute de la queue du Helpdesk. Class HelpdeskQueueSender Cette classe est chargé d'offrir un nombre suffisant de méthodes pour permettre à ses classes filles d'émettre des messages SAS dans la queue du Helpdesk. Elle dérive directement de la classe HelpdeskQueueConnector et utilise des instance de la classe sas.util.SasMessage [ Class SasMessage]. Synopsis public class HelpdeskQueueSender extends HelpdeskQueueConnector // Private Fields private QueueSender sender; private QueueSession session; // Public Constructors public HelpdeskQueueSender(); // Public Methods public boolean startSender(); Page 38 { Projet CNAM – 2002/2003 Système automatique de Surveillance public boolean stopSender(); public void sendMessage(sas.util.SasMessage message); // Private Methods private void initSession(); private void initSender(); private Session getSession(); } Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.HelpdeskQueueConnector | sas.util.HelpdeskQueueSender Members Field sender Synopsis: private QueueSender sender Variable interne référencant l'objet QueueSender de la classe Field session Synopsis: private QueueSession session Variable interne référencant l'objet QueueSession de la classe. Method getSession() Synopsis: private Session getSession(); Parameters return - un objet session Additional Information See Also sas.util.SasMessage.getJmsMessage getJmsMessage(Session)>] Page 39 [Method Projet CNAM – 2002/2003 Système automatique de Surveillance Renvoie la session JMS interne de l'objet. Method initSender() Synopsis: private void initSender(); Initialise un sender à l'aide de la session créée au préalable et conserve une référence dans la variable interne sas.util.HelpdeskQueueSender.sender [ Field sender]. Repose sur le paramètre: • main-topic-name Method initSession() Synopsis: private void initSession(); Initialise une session à l'aide de la connexion créée par l'objet parent et conserve une référence dans la variable interne sas.util.HelpdeskQueueSender.session [ Field session]. Method sendMessage(SasMessage) Synopsis: public void sendMessage(sas.util.SasMessage message); Parameters message - un message SAS Envoie un message SAS sur la queue du Helpdesk Method startSender() Synopsis: public boolean startSender(); Parameters return - true si l'appel a r&eagraveussi. Cette méthode active la connection au serveur OpenJMS à l'aide de la méthode parente sas.util.HelpdeskQueueConnector.openConnection [ Method openConnection()]. Ensuite, elle initialise une session JMS et créé un sender sur cette session. Elle utilise la méthode sas.util.HelpdeskQueueSender.initSession [ Method initSession()] pour initialiser la session, puis la méthode sas.util.HelpdeskQueueSender.initSender [ Method initSender()] pour créer le sender. Method stopSender() Synopsis: public boolean stopSender(); Arrête le sender. Page 40 Projet CNAM – 2002/2003 Système automatique de Surveillance Class JndiConnector La classe JndiConnector se charge d'initialiser le contexte JNDI. Cette classe s'occupe aussi de la gestion du fichier de configuration du package et propose quelques méthodes utiles au développement de sous classes: • Des méthodes d'accès aux paramètres du fichier de configuration (sas.util.JndiConnector.getSasProperty [ Method getSasProperty(java.lang.String)], sas.util.JndiConnector.getSasProperty [ Method getSasProperty(java.lang.String, java.lang.String)]) • Des méthodes pour l'émission de message de log (log [ Method log(java.lang.String)], warning [ Method warning(java.lang.String)], debug [ Method debug(java.lang.String)] et error [ Method error(java.lang.String)]) A faire: • Passer les variables sas.util.JndiConnector.jndiContext [ Field jndiContext] et sas.util.JndiConnector.configProperties [ Field configProperties] en variables statiques afin d'éviter de les initialiser à chaques instanciation d'un objet sas.util.JndiConnector [ Class JndiConnector]. Il faut pour celà modifier le comportement des méthodes sas.util.JndiConnector.loadConfigFile [ Method loadConfigFile(java.io.File)] et sas.util.JndiConnector.initJndi [ Method initJndi()]. Synopsis class JndiConnector { // Private Fields private Properties configProperties; private boolean debugMode; private InitialContext jndiContext; private boolean silentMode; // Public Constructors public JndiConnector(); // Public Methods public InitialContext getJndiContext(); public void addProperties(java.io.File propertiesFile); public String getSasProperty(java.lang.String key); public String getSasProperty(java.lang.String key, java.lang.String defaultValue); public void log(java.lang.String mess); public void warning(java.lang.String mess); public void debug(java.lang.String mess); public void error(java.lang.String mess); // Private Methods private void initVerboseMode(); private void loadConfigFile(java.io.File configFile); private void initJndi(); private void logMessage(java.lang.String mess, int type); } Additional Information See Also sas.util [Chapter 4>] Inheritance Path java.lang.Object Page 41 Projet CNAM – 2002/2003 Système automatique de Surveillance Inheritance Path | sas.util.JndiConnector Members Constructor JndiConnector() Synopsis: public JndiConnector(); Charge le fichier de configuration de l'application et initialise le contexte JNDI. Le fichier de configuration sas.util.properties est chargé par la méthode sas.util.JndiConnector.loadConfigFile [ Method loadConfigFile(java.io.File)], puis le contexte JNDI est initialisé en faisant appel à la méthode sas.util.JndiConnector.initJndi [ Method initJndi()]. Field configProperties Synopsis: private java.util.Properties configProperties Additional Information See Also sas.util.JndiConnector.loadConfigFile loadConfigFile(java.io.File)>] [Method Variable interne permettant de stocker les paramètres du fichier de configuration. Field jndiContext Synopsis: private javax.naming.InitialContext jndiContext Additional Information See Also sas.util.JndiConnector.initJndi [Method initJndi()>] Variable interne permettant de stocker le contexte JNDI de l'application SAS. Method addProperties(File) Synopsis: public void addProperties(java.io.File propertiesFile); Parameters propertiesFile - un fichier de properties Page 42 Projet CNAM – 2002/2003 Système automatique de Surveillance Permet de charger un fichier de configuration supplémentaire. Les nouveaux paramètres sont ajoutés dans la variable interne sas.util.JndiConnector.configProperties [ Field configProperties]. Dans le cas où l'un de ces paramètres existe déjà, sa valeur est remplacée par le nouveau. Method debug(String) Synopsis: public void debug(java.lang.String mess); Parameters mess - la chaîne à afficher Affiche une chaîne précédée des caractères [DEBUG] sur la sortie d'erreur de la console. Method error(String) Synopsis: public void error(java.lang.String mess); Parameters mess - la chaîne à afficher Affiche une chaîne précédée des caractères **ERROR** sur la sortie d'erreur de la console et stoppe le programme avec le code de retour -1 Method getJndiContext() Synopsis: public InitialContext getJndiContext(); Parameters return - un objet InitialContext référencant le service JNDI SAS Méthode d'accès au membre privé sas.util.JndiConnector.jndiContext [ Field jndiContext]. Method getSasProperty(String) Synopsis: public String getSasProperty(java.lang.String key); Parameters key - nom de la clef return - valeur de la clef Page 43 Projet CNAM – 2002/2003 Système automatique de Surveillance Additional Information See Also sas.util.JndiConnector.getSasProperty getSasProperty(java.lang.String, java.lang.String)>] [Method Renvoie la valeur de la clef du fichier de configuration. Method getSasProperty(String, String) Synopsis: public String getSasProperty(java.lang.String key, java.lang.String defaultValue); Parameters key - nom de la clef defaultValue - valeur par défault return - la valeur de la clef ou à défaut le paramètre defaultValue Additional Information See Also sas.util.JndiConnector.getSasProperty getSasProperty(java.lang.String)>] [Method Renvoie la valeur de la clef du fichier de configuration ou une valeur par défaut si la clef n'existe pas. Method initJndi() Synopsis: private void initJndi(); Initialise le context JNDI et stocke une référence dans la variable interne sas.util.JndiConnector.jndiContext [ Field jndiContext]. Repose sur les paramètres: • jndi-server-protocol • jndi-server-name • jndi-server-port Method initVerboseMode() Synopsis: private void initVerboseMode(); Initialise le mode d'affichage des logs Method loadConfigFile(File) Synopsis: private void loadConfigFile(java.io.File configFile); Page 44 Projet CNAM – 2002/2003 Système automatique de Surveillance Lit le fichier de config sas.properties et charge les paramètres dans la variable interne sas.util.JndiConnector.configProperties [ Field configProperties] Method log(String) Synopsis: public void log(java.lang.String mess); Parameters mess - la chaîne à afficher Affiche une chaîne de caractère sur la sortie standard de la console. Method logMessage(String, int) Synopsis: private void logMessage(java.lang.String mess, int type); Parameters mess - la chaîne à afficher type - le type de message Additional Information See Also sas.util.LogType [Interface LogType>], sas.util.JndiConnector.log [Method log(java.lang.String)>], sas.util.JndiConnector.debug [Method debug(java.lang.String)>] Permet d'écrire une chaîne de type INFO ou DEBUG sur la console. En fonction du type de message, définit à l'aide des constantes exportées par l'interface sas.util.LogType [ Interface LogType], la chaîne s'affiche différement sur la console. Cette méthode privée existe pour les besoins des méthodes sas.util.JndiConnector.log [ Method log(java.lang.String)], sas.util.JndiConnector.warning [ Method warning(java.lang.String)], sas.util.JndiConnector.debug [ Method debug(java.lang.String)] et sas.util.JndiConnector.error [ Method error(java.lang.String)]. Method warning(String) Synopsis: public void warning(java.lang.String mess); Parameters mess - la chaîne à afficher Page 45 Projet CNAM – 2002/2003 Système automatique de Surveillance Affiche une chaîne précédée des caractères **WARNING** sur la sortie d'erreur de la console. Class MainTopicConnector Cette classe assure l'établissement d'une connexion vers une file de message du serveur OpenJMS. Le nom de la file de message, le nom JNDI de la fabrique de connexion et le nom de l'utilisateur sont récupérés dans le fichier de configuration du package. Synopsis class MainTopicConnector extends JndiConnector { // Private Fields private TopicConnection jmsConnection; // Package Private Constructors MainTopicConnector(); // Public Methods public TopicConnection getConnection(); // Protected Methods protected TopicConnection openConnection(); protected void closeConnection(); // Private Methods private TopicConnection jmsConnect(java.lang.String factoryName, java.lang.String username, java.lang.String password); } Additional Information See Also sas.util [Chapter 4>] Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.MainTopicConnector Members Field jmsConnection Synopsis: private TopicConnection jmsConnection Page 46 Projet CNAM – 2002/2003 Système automatique de Surveillance Variable interne de type TopicConnection destinée à conserver une référence sur la connexion JMS créée par la méthode sas.util.MainTopicConnector.jmsConnect [ Method jmsConnect(java.lang.String, java.lang.String, java.lang.String)]. Method closeConnection() Synopsis: protected void closeConnection(); Termine la connexion au serveur OpenJMS, ouverte avec l'appel de la méthode sas.util.MainTopicConnector.openConnection [ Method openConnection()]. Method getConnection() Synopsis: public TopicConnection getConnection(); Parameters une référence sur la variable interne sas.util.MainTopicConnector.jmsConnection [ Field jmsConnection>] de type TopicConnection return Méthode d'accès à la variable interne sas.util.MainTopicConnector.jmsConnection [ Field jmsConnection]. Method jmsConnect(String, String, String) Synopsis: private TopicConnection jmsConnect(java.lang.String factoryName, java.lang.String username, java.lang.String password); Parameters factoryName - le nom JNDI de la fabrique de connexion username - le nom d'utilisateur à utiliser pour se connecter password - le mot de passe de l'utilisateur return - un objet TopicConnection Etablit la connexion avec le serveur OpenJMS. Method openConnection() Synopsis: protected TopicConnection openConnection(); Parameters Page 47 Projet CNAM – 2002/2003 Système automatique de Surveillance Parameters return - un objet TopicConnection Récupère le nom de la fabrique de connexion et l'utilisateur local dans le fichier de configuration du package et se connecte au serveur JMS à l'aide de la méthode sas.util.MainTopicConnector.jmsConnect [ Method jmsConnect(java.lang.String, java.lang.String, java.lang.String)]. Repose sur les paramètres: • topic-connection-factory • jms-user-id • jms-user-password Class MainTopicReceiver Cette classe se charge d'écouter la file de message principale et encapsule les messages reçus dans des instances de l'objet sas.util.SasMessage [ Class SasMessage]. Elle dispose de plusieurs option de configuration comme la possibilité de définir un abonn&eacute durable et de filtrer les messages en fonction des critères propres aux sas.util.SasMessage [ Class SasMessage] Synopsis public abstract class MainTopicReceiver extends MainTopicConnector // Private Fields private TopicSession session; private TopicSubscriber subscriber; // Public Constructors public MainTopicReceiver(); // Public Methods public void onMessage(Message message); public void startListener(); public void startListener(java.lang.String durableName); public void startListener(java.lang.String durableName, java.lang.String filter); public void stopListener(); abstract public void newSasMessage(sas.util.SasMessage message); // Private Methods private void initSession(); private void initSubscriber(java.lang.String filter); private void initDurableSubscriber(java.lang.String durableName, java.lang.String filter); } Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.MainTopicConnector Page 48 { Projet CNAM – 2002/2003 Système automatique de Surveillance Inheritance Path | sas.util.MainTopicReceiver Members Field session Synopsis: private TopicSession session Variable interne référencant l'objet TopicSession de la classe. Field subscriber Synopsis: private TopicSubscriber subscriber Variable interne référencant l'objet TopicSubscriber de la classe Method initDurableSubscriber(String, String) Synopsis: private void initDurableSubscriber(java.lang.String durableName, java.lang.String filter); Parameters filter - sélécteur de message Initialise un subscriber à l'aide de la session créée au préalable et conserve une référence dans la variable interne sas.util.MainTopicReceiver.subscriber [ Field subscriber]. Le subscriber sera créé durable, avec comme nom de référence la valeur du paramètre jms-user-id du fichier de configuration du package. Si la variable filter n'est pas égal à null, le contenue de cette varaible sera utilisée comme sélecteur de message. Repose sur le paramètre: • main-topic-name Method initSession() Synopsis: private void initSession(); Initialise une session à l'aide de la connexion créée par l'objet parent et conserve une référence dans la variable interne sas.util.MainTopicReceiver.session [ Field session]. Method initSubscriber(String) Synopsis: private void initSubscriber(java.lang.String filter); Parameters Page 49 Projet CNAM – 2002/2003 Système automatique de Surveillance Parameters filter - la valeur du sélecteur de message Initialise un subscriber à l'aide de la session créée au préalable et conserve une référence dans la variable interne sas.util.MainTopicReceiver.subscriber [ Field subscriber]. Si le param&egrave filter n'est pas égal à null, sa valeur est utilisée comme sélecteur de message. Repose sur le paramètre: • main-topic-name Method newSasMessage(SasMessage) Synopsis: abstract public void newSasMessage(sas.util.SasMessage message); Parameters message - un objet SasMessage représentant le message reçu Méthode appelée à la réception d'un nouveau message. Method onMessage(Message) Synopsis: public void onMessage(Message message); Appelée lors de la réception d'un nouveau message. Appele la methode sas.util.MainTopicReceiver.newSasMessage [ Method newSasMessage(sas.util.SasMessage)] Method startListener() Synopsis: public void startListener(); Additional Information See Also sas.util.MainTopicReceiver.startListener startListener(java.lang.String, java.lang.String)>] [Method Initialise le récepteur de message sans abonné durable et sans sélecteur de messages. Cete méthode fait appel au à la méthode sas.util.MainTopicReceiver.startListener [ Method startListener(java.lang.String, java.lang.String)] en mettant les paramètres durableName et filter à null. Method startListener(String) Synopsis: public void startListener(java.lang.String durableName); Parameters Page 50 Projet CNAM – 2002/2003 Système automatique de Surveillance Parameters durableName - le nom de l'abonné durable Initialise le récepteur de message avec ou sans abonnement durable et sans sélecteur de messages. Si la valeur du paramètre durableName est à null, le subscriber sera créé non durable. Si ce paramètre est reçoit une chaîne de caractère, la valeur de celle ci est utilisèe comme nom d'abonnè durable. Cette méthode fait appel au à la méthode sas.util.MainTopicReceiver.startListener [ Method startListener(java.lang.String, java.lang.String)] en transmettant le paramètres durableName et en mettant le paramètre filter à null. Method startListener(String, String) Synopsis: public void startListener(java.lang.String durableName, java.lang.String filter); Additional Information See Also sas.util.MainTopicReceiver.initDurableSubscriber [Method initDurableSubscriber(java.lang.String, java.lang.String)>], sas.util.MainTopicReceiver.initSubscriber [Method initSubscriber(java.lang.String)>] Initialise le récepteur de message avec ou sans abonnement durable et avec ou sans sélecteur de messages. L'initialisation se fait d'abord en créant une session grâce à la méthode sas.util.MainTopicReceiver.initSession [ Method initSession()], puis, suivant la valeur de la variable durableName, en déclarant un subscriber durable ou non durable avec les méthode sas.util.MainTopicReceiver.initSubscriber [ Method initSubscriber(java.lang.String)] et sas.util.MainTopicReceiver.initDurableSubscriber [ Method initDurableSubscriber(java.lang.String, java.lang.String)]. Le paramètre filter est transmis à ces fonctions. Method stopListener() Synopsis: public void stopListener(); Cette méthode arrête l'écoute de la file de message principale. Class MainTopicSender Cette classe est chargé d'offrir un nombre suffisant de méthodes pour permettre à ses classes filles d'émettre des messages SAS dans la file de message principal. Elle dérive directement de la classe MainTopicConnector et utilise des instance de la classe sas.util.SasMessage [ Class SasMessage]. Synopsis public class MainTopicSender extends MainTopicConnector // Private Fields private TopicPublisher publisher; Page 51 { Projet CNAM – 2002/2003 Système automatique de Surveillance private TopicSession session; // Public Constructors public MainTopicSender(); // Public Methods public boolean startSender(); public boolean stopSender(); public void sendMessage(sas.util.SasMessage message); // Private Methods private void initSession(); private void initPublisher(); private Session getSession(); } Inheritance Path java.lang.Object | sas.util.JndiConnector | sas.util.MainTopicConnector | sas.util.MainTopicSender Members Field publisher Synopsis: private TopicPublisher publisher Variable interne référencant l'objet TopicPublisher de la classe Field session Synopsis: private TopicSession session Variable interne référencant l'objet TopicSession de la classe. Method getSession() Synopsis: private Session getSession(); Parameters return - un objet session Page 52 Projet CNAM – 2002/2003 Système automatique de Surveillance Additional Information See Also sas.util.SasMessage.getJmsMessage getJmsMessage(Session)>] [Method Renvoie la session JMS interne de l'objet. Method initPublisher() Synopsis: private void initPublisher(); Initialise un publisher à l'aide de la session créée au préalable et conserve une référence dans la variable interne sas.util.MainTopicSender.publisher [ Field publisher]. Repose sur le paramètre: • main-topic-name Method initSession() Synopsis: private void initSession(); Initialise une session à l'aide de la connexion créée par l'objet parent et conserve une référence dans la variable interne sas.util.MainTopicSender.session [ Field session]. Method sendMessage(SasMessage) Synopsis: public void sendMessage(sas.util.SasMessage message); Parameters message - un message SAS Envoie un message SAS sur la file de message principale Method startSender() Synopsis: public boolean startSender(); Parameters return - true si l'appel a r&eagraveussi. Cette méthode active la connection au serveur OpenJMS à l'aide de la méthode parente sas.util.MainTopicConnector.openConnection [ Method openConnection()]. Ensuite, elle initialise une session JMS et créé un éditeur sur cette session. Elle utilise la méthode sas.util.MainTopicSender.initSession [ Method initSession()] pour initialiser la session, puis la méthode sas.util.MainTopicSender.initPublisher [ Method initPublisher()] pour créer le publisher. Page 53 Projet CNAM – 2002/2003 Système automatique de Surveillance Method stopSender() Synopsis: public boolean stopSender(); Arrête le sender. Class SasMessage Cette classe modèlise les messages transmis entre les différents acteurs du système SAS. Elle se charge de valider les informations essentielles au bon acheminement des messages du système, mais fournit aussi une couche d'abstraction d'accès au message JMS pour les classes dérivées des classes du package sas.util [ Chapter 4]. Synopsis public class SasMessage { // Private Fields private String comment; private String creationDate; private int level; private String messageCorrelationId; private String messageId; private String senderId; private int type; // Public Constructors public SasMessage(); public SasMessage(int type, int level, java.lang.String senderId, java.lang.String comment); public SasMessage(Message jmsMessage) throws JMSException; // Public Methods public Message getJmsMessage(Session session) throws JMSException; public void setMessageCorrelationId(java.lang.String id); public void setType(int type); public void setLevel(int level); public void setSenderId(java.lang.String id); public void setComment(java.lang.String comment); public void setCreationDate(java.util.Date date); public String getMessageId(); public String getMessageCorrelationId(); public int getType(); public int getLevel(); public String getSenderId(); public String getComment(); public String getCreationDate(); } Additional Information See Also sas.util.MainTopicSender.sendMessage [Method sendMessage(sas.util.SasMessage)>], sas.util [Chapter 4>] Inheritance Path java.lang.Object | sas.util.SasMessage Page 54 Projet CNAM – 2002/2003 Système automatique de Surveillance Members Constructor SasMessage() Synopsis: public SasMessage(); Initialise les variables internes de l'objet, comme par exemple la date de création du message. Constructor SasMessage(int, int, String, String) Synopsis: public SasMessage(int type, int level, java.lang.String senderId, java.lang.String comment); Parameters type - type du message level - niveau de gravité du message senderId - ID utilisé pour désigner l'expéditeur du message comment - commentaire associé au message Initialise les variables internes de l'objet avec les paramètre reçus. Constructor SasMessage(Message) Synopsis: public SasMessage(Message jmsMessage) throws JMSException; Parameters jmsMessage - un objet du type java.jms.Message Initialise les variables internes de l'objet en se référant aux corp et en-tête du message JMS transmis en paramètre. Field comment Synopsis: private java.lang.String comment Contient un commentaire propre au message. Field creationDate Synopsis: private java.lang.String creationDate Contient une chaîne représentant la date de céation du message Page 55 Projet CNAM – 2002/2003 Système automatique de Surveillance Field level Synopsis: private int level Contient le niveau de gravité du message Field messageCorrelationId Synopsis: private java.lang.String messageCorrelationId Contient l'ID JMSCorrelationId Field messageId Synopsis: private java.lang.String messageId Contient l'ID JMS du message Field senderId Synopsis: private java.lang.String senderId Contient l'ID de l'expéditeur du message, qui peut être différent de l'ID utilisé pour se connecter au serveur. Field type Synopsis: private int type Contient la valeur correspondant au type du message Method getJmsMessage(Session) Synopsis: public JMSException; Message getJmsMessage(Session session) throws Parameters session - la session par laquelle le message sera envoyé Retoune un message JMS prêt à être expédié sur une file associée à la session transmise en paramètre. Cet objet contient les informations pertinentes de l'objet SasMessage auquel il est assoicé. Interface LogType Cette interface exporte deux int destinés à être transmis à la méthode sas.util.JndiConnector.logMessage [ Method logMessage(java.lang.String, int)] pour définir le type de message à afficher. Page 56 Projet CNAM – 2002/2003 Système automatique de Surveillance Synopsis interface LogType { // Public Fields public final static public final static public final static public final static int int int int DEBUG; ERROR; INFO; WARNING; } Inheritance Path sas.util.LogType Members Field DEBUG Synopsis: public final static int DEBUG Additional Information See Also sas.util.JndiConnector.debug [Method debug(java.lang.String)>] Message de type DEBUG. Field ERROR Synopsis: public final static int ERROR Additional Information See Also sas.util.JndiConnector.error [Method error(java.lang.String)>] Message de type ERROR. (Attention, ces messages arrêtent l'exécution du programme). Field INFO Synopsis: public final static int INFO Additional Information See Also sas.util.JndiConnector.log [Method log(java.lang.String)>] Message de type INFO. Page 57 Projet CNAM – 2002/2003 Système automatique de Surveillance Field WARNING Synopsis: public final static int WARNING Additional Information See Also sas.util.JndiConnector.warning warning(java.lang.String)>] [Method Message de type WARNING. Interface SasMessageType Cette interface exporte deux int destinés à identifier le type d'un message SAS. Synopsis public interface SasMessageType { // Public Fields public final static int CONF; public final static int INFO; } Additional Information See Also sas.util.SasMessage.getType [Class SasMessage>], sas.util.SasMessage.setType [Class SasMessage>] Inheritance Path sas.util.SasMessageType Members Field CONF Synopsis: public final static int CONF Message de configuration Field INFO Synopsis: public final static int INFO Message d'information Page 58