Système Automatique de Surveillance

publicité
Système Automatique de
Surveillance
Jean-Paul Gressard - Jacques Lacote - Laurent Marchand - Xavier
Nicolovici
Copyright 2003
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 répertoireconfig,
respectant le format nécessaire aux objetProperties
p> <br> <table width="100%" border=1> <tr> <th colspan=3>Description des paramètres du fichier de configuration</th> </tr>
<tr> <th>Paramètre</th> <th>Commentaires</th> <th>Status</th> </tr> <tr> <td>jndi-server-protocol</td> <td>Dépend de la
configuration du serveur JNDI (rmi,tcp,...)</td> <td>Obligatoire</td> </tr> <tr> <td>jndi-server-name</td> <td>Hostname du
serveur JNDI</td> <td>Obligatoire</td> </tr> <tr> <td>jndi-server-port</td> <td>Numéro du port du serveur JNDI</td>
<td>Obligatoire</td> </tr> <tr> <td>topic-connection-factory</td> <td>Dépend de la configuration du serveur OpenJMS</td>
<td>Obligatoire</td> </tr> <tr> <td>queue-connection-factory</td> <td>Dépend de la configuration du serveur OpenJMS</td>
<td>Obligatoire</td> </tr> <tr> <td>jms-user-id</td> <td>Le nom d'utilisateur JMS, est aussi utilisé pour identifier l'expéditeur
des messages</td> <td>Obligatoire</td> </tr> <tr> <td>jms-user-password</td> <td>Le mot de passe du jms-userid. Pas utilisé
pour l'instant</td> <td>Optionnel</td> </tr> <tr> <td>main-topic-name</td> <td>Dépend de la configuration du serveur
OpenJMS</td> <td>Obligatoire</td> </tr> <tr> <td>helpdesk-queue-name</td> <td>Dépend de la configuration du serveur
OpenJMS</td> <td>Obligatoire</td> </tr> </table> <br>
Page 2
sas.util.Connector
sas.util
Class Connector
java.lang.Object
|
+-sas.util.Connector
Direct Known Subclasses:
MainTopicConnector
public class Connector
extends java.lang.Object
La classe Connector 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 ({@link #getSasProperty(String)}, {@link
#getSasProperty(String,String)})
- Des méthodes pour l'émission de message de log ({@link #log(String) log}, {@link #warning(String) warning}, {@link
#debug(String) debug} et {@link #error(String) error})
A faire:
- Passer les variables {@link #jndiContext} et {@link #configProperties} en variables statiques afin d'éviter de les initialiser
à chaques instanciation d'un objet {@link Connector}. Il faut pour celà modifier le comportement des méthodes {@link
#loadConfigFile(File)} et {@link #initJndi()}.
- Créer un nouveau constructeur acceptant un objet File en paramètre afin de pouvoir transmettre le nom du fichier en tant
que paramètre. Attention, les sous classes devront être adaptée en conséquence
See Also:
sas.util
Fields
jndiContext
private javax.naming.InitialContext jndiContext
Variable interne permettant de stocker le contexte JNDI de l'application SAS.
See Also:
#initJndi()
configProperties
private java.util.Properties configProperties
Variable interne permettant de stocker les paramètres du fichier de configuration.
See Also:
#loadConfigFile(File)
Constructors
(continued on next page)
Page 3
sas.util.Connector
(continued from last page)
Connector
public Connector()
Charge le fichier de configuration de l'application et initialise le contexte JNDI.
Le fichier de configuration sas.properties est chargé par la méthode {@link #loadConfigFile(File)}, puis le contexte
JNDI est initialisé en faisant appel à la méthode {@link #initJndi()}.
Methods
loadConfigFile
private void loadConfigFile(java.io.File configFile)
Lit le fichier de config sas.properties et initialise la variable interne {@link #configProperties}
initJndi
private void initJndi()
Initialise le context JNDI et stocke une référence dans la variable interne {@link #jndiContext}.
Repose sur les paramètres:
jndi-server-protocoljndi-server-namejndi-server-port
getJndiContext
public javax.naming.InitialContext getJndiContext()
Méthode d'accès au membre privé {@link #jndiContext}.
Returns:
un objet InitialContext référencant le service JNDI SAS
getSasProperty
public java.lang.String getSasProperty(java.lang.String key)
Renvoie la valeur de la clef du fichier de configuration.
Parameters:
key - nom de la clef
Returns:
valeur de la clef
See Also:
#getSasProperty(String,String)
getSasProperty
public java.lang.String getSasProperty(java.lang.String key,
java.lang.String defaultValue)
Renvoie la valeur de la clef du fichier de configuration ou une valeur par défaut si la clef n'existe pas.
Parameters:
key - nom de la clef
defaultValue - valeur par défault
Returns:
(continued on next page)
Page 4
sas.util.Connector
(continued from last page)
la valeur de la clef ou à défaut le paramètre defaultValue
See Also:
#getSasProperty(String)
logMessage
private void logMessage(java.lang.String mess,
int type)
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 {@link LogType}, la chaîne
s'affiche différement sur la console. Cette méthode privée existe pour les besoins des méthodes {@link #log(String)},
{@link #warning(String)}, {@link #debug(String)} et {@link #error(String)}.
Parameters:
mess - la chaîne à afficher
type - le type de message
See Also:
LogType
#log(String)
#debug(String)
log
public void log(java.lang.String mess)
Affiche une chaîne de caratère sur la sortie standard de la console.
Parameters:
mess - la chaîne à afficher
warning
public void warning(java.lang.String mess)
Affiche une chaîne précédée des caractères **WARNING**sur la sortie d'erreur de la console.
Parameters:
mess - la chaîne à afficher
debug
public void debug(java.lang.String mess)
Affiche une chaîne précédée des caractères **DEBUG**sur la sortie d'erreur de la console.
Parameters:
mess - la chaîne à afficher
error
public void error(java.lang.String mess)
Affiche une chaîne précédée des caractères **ERROR**sur la sortie d'erreur de la console et stop le programme avec le
code de retour -1
Parameters:
mess - la chaîne à afficher
Page 5
sas.util.LogType
sas.util
Interface LogType
interface LogType
Cette interface exporte deux int destinés à être transmis à la méthode {@link Connector#logMessage(String,int)} pour définir le
type de message à afficher.
Fields
INFO
public static final int INFO
Message de type INFO.
See Also:
Connector#log(String)
WARNING
public static final int WARNING
Message de type WARNING.
See Also:
Connector#warning(String)
DEBUG
public static final int DEBUG
Message de type DEBUG.
See Also:
Connector#debug(String)
ERROR
public static final int ERROR
Message de type ERROR (Attention, ces messages arrêtent l'exécution du programme).
See Also:
Connector#error(String)
Page 6
sas.util.MainTopicConnector
sas.util
Class MainTopicConnector
java.lang.Object
|
+-sas.util.Connector
|
+-sas.util.MainTopicConnector
Direct Known Subclasses:
MainTopicReceiver, MainTopicSender
public class MainTopicConnector
extends Connector
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.
See Also:
sas.util
Fields
jmsConnection
private TopicConnection jmsConnection
Variable interne destinée de type TopicConnection destinée à conserver une référence sur la connexion JMS créée par la
méthode {@link #jmsConnect(String,String,String)}.
Constructors
MainTopicConnector
public MainTopicConnector()
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 {@link #jmsConnect(String,String,String)}.
Repose sur les paramètres:
topic-connection-factoryjms-user-idjms-user-password
Methods
jmsConnect
private void jmsConnect(java.lang.String factoryName,
java.lang.String username,
java.lang.String password)
Etablit la connexion avec le serveur OpenJMS.
Parameters:
factoryName - le nom JNDI de la fabrique de connexion
username - le nom d'utilisateur à utiliser pour se connecter
Page 7
sas.util.MainTopicConnector
(continued from last page)
password - le mot de passe de l'utilisateur
getConnection
public TopicConnection getConnection()
Méthode d'accès à la variable interne {@link #jmsConnection}.
Returns:
une référence sur la variable interne {@link #jmsConnection}
Page 8
sas.util.MainTopicReceiver
sas.util
Class MainTopicReceiver
java.lang.Object
|
+-sas.util.Connector
|
+-sas.util.MainTopicConnector
|
+-sas.util.MainTopicReceiver
public class MainTopicReceiver
extends MainTopicConnector
Cette classe se charge d'écouter la file de message principale et encapsule les messages reçus dans des instances de l'objet {@link
SasMessage}. Elle dispose de plusieurs option de configuration comme la possibilité de définir un abonné durable et de filtrer les
messages en fonction des critères propres aux {@link SasMessage}
Fields
session
private TopicSession session
Variable interne référencant l'objet TopicSession de la classe.
subscriber
private TopicSubscriber subscriber
Variable interne référencant l'objet TopicSubscriber de la classe
filter
private java.lang.String filter
Variable interne contenant chaîne utilisée pour filtrer les messages reçus.
Constructors
MainTopicReceiver
public MainTopicReceiver()
Initialise un récepteur de message sans abonné durable. Ce constructeur fait simplement appel au constructeur {@link
#MainTopicReceiver(boolean)} en mettent le paramètre durableName égual à "".
MainTopicReceiver
public MainTopicReceiver(boolean durable)
Initialise un récepteur de message. Si la valeur du paramètre durable est à true, le subscriber sera créé durable, et dans
le cas ou ce paramètre est à false, l'abonné sera non durable. L'initialisation se fait d'abord en créant une session grâce à
la méthode {@link #initSession()}, puis en déclarant un subscriber avec la méthode {@link #initSubscriber(boolean)}.
Parameters:
durableName
Page 9
sas.util.MainTopicReceiver
(continued from last page)
Methods
initSession
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
{@link #session}.
initSubscriber
private void initSubscriber(boolean durable)
Initialise un subscriber à l'aide de la session créée au préalable et conserve une référence dans la variable interne {@link
#subscriber}. Si le contenu de la variable durableName est égual à true, 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.
Repose sur le paramètre:
main-topic-name
Parameters:
durableName - nom de l'abonné durable
onMessage
public void onMessage(Message message)
setFilter
public void setFilter(java.lang.String filter)
Initialise le filtre interne de message. Le filtre doit respsecter deux conditions:
Utiliser la sémantique propre à l'API JMSFiltrer les champs propres à l'objet SAS
Pour la première, veuillez vous reporter à la documentation de JMS, et la secande, consultez la documentation de la classe
{@link SasMessage}.
Parameters:
filter - une chaîne contenant le filtre à appliquer
run
public void run()
Enclenche l'écoute de la file de message principale. Cette méthode déclenche l'appel de la méthode {@link
#newSasMessage(SasMessage)} de la classe dès qu'un nouveau message est disponible.
close
public void close()
Cette arrête l'écoute de la file de message principale.
newSasMessage
public void newSasMessage(SasMessage message)
Méthode appelée à la réception d'un nouveau message.
Parameters:
message - un objet SasMessage représentant le message reçu
Page 10
sas.util.MainTopicSender
sas.util
Class MainTopicSender
java.lang.Object
|
+-sas.util.Connector
|
+-sas.util.MainTopicConnector
|
+-sas.util.MainTopicSender
Direct Known Subclasses:
Controler
public class MainTopicSender
extends MainTopicConnector
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
{@link SasMessage}.
Fields
session
private TopicSession session
Variable interne référencant l'objet TopicSession de la classe.
publisher
private TopicPublisher publisher
Variable interne référencant l'objet TopicPublisher de la classe
Constructors
MainTopicSender
public MainTopicSender()
Le constructeur de la classe initialise une session JMS et ensuite créé un éditeur sur cette session.
Il utilise la méthode {@link #initSession()} pour initialiser une session, puis la méthode {@link #initPublisher()} pour
créer un publisher.
Methods
initSession
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
{@link #session}.
initPublisher
private void initPublisher()
Page 11
sas.util.MainTopicSender
(continued from last page)
Initialise un publisher à l'aide de la seesion créée au préalable et conserve une référence dans la variable interne {@link
#publisher}.
Repose sur le paramètre:
main-topic-name
getSession
private Session getSession()
Renvoie la session JMS interne de l'objet.
Returns:
un objet session
See Also:
SasMessage#getJmsMessage(Session)
sendMessage
public void sendMessage(SasMessage message)
Envoie un message SAS sur la file de message principale
Parameters:
message - un message SAS
Page 12
sas.util.SasMessage
sas.util
Class SasMessage
java.lang.Object
|
+-sas.util.SasMessage
public class SasMessage
extends java.lang.Object
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 {@link sas.util}.
See Also:
MainTopicSender.sendMessage(SasMessage)(), sas.util
Fields
messageId
private java.lang.String messageId
messageCorrelationId
private java.lang.String messageCorrelationId
type
private int type
level
private int level
senderId
private java.lang.String senderId
comment
private java.lang.String comment
Constructors
Page 13
sas.util.SasMessage
(continued from last page)
SasMessage
public SasMessage()
SasMessage
public SasMessage(int type,
int level,
java.lang.String sender,
java.lang.String comment)
SasMessage
public SasMessage(TextMessage jmsMessage)
Methods
getJmsMessage
public TextMessage getJmsMessage(Session session)
throws JMSException
setMessageCorrelationId
public void setMessageCorrelationId(java.lang.String id)
setType
public void setType(int type)
setLevel
public void setLevel(int level)
setSenderId
public void setSenderId(java.lang.String id)
setComment
public void setComment(java.lang.String comment)
Page 14
sas.util.SasMessage
(continued from last page)
getMessageId
public java.lang.String getMessageId()
getMessageCorrelationId
public java.lang.String getMessageCorrelationId()
getType
public int getType()
getLevel
public int getLevel()
getSenderId
public java.lang.String getSenderId()
getComment
public java.lang.String getComment()
Page 15
sas.util.SasMessageType
sas.util
Interface SasMessageType
public interface SasMessageType
Fields
INFO
public static final int INFO
CONF
public static final int CONF
Page 16
Package
sas.mdc
Page 17
sas.mdc.Controler
sas.mdc
Class Controler
java.lang.Object
|
+-sas.util.Connector
|
+-sas.util.MainTopicConnector
|
+-sas.util.MainTopicSender
|
+-sas.mdc.Controler
public class Controler
extends MainTopicSender
Doc à faire
Constructors
Controler
public Controler()
Constructeur de la classe
Page 18
sas.mdc.Watcher
sas.mdc
Class Watcher
java.lang.Object
|
+-sas.mdc.Watcher
abstract class Watcher
extends java.lang.Object
Classe abstraite permettant l'implémentation de nouveau modules de contrôle indépendant du code principal de l'application SAS.
Pour plus d'information sur l'utilisation de cette classe, veuillez vous référer au mode de fonctionnement de la classe {@link
Controler}.
Constructors
Watcher
public Watcher()
Constructeur de la classe.
Page 19
Package
sas.misc
Page 20
sas.misc.Demo
sas.misc
Class Demo
java.lang.Object
|
+-sas.misc.Demo
public class Demo
extends java.lang.Object
Cette classe ne sert qu'à tester la connexion au serveur OpenJMS. Elle se connecte au topic "topic1" et envoie 10 message de type
String contenant la chaîne "démo"
Fields
pubSession
private TopicSession pubSession
Objet TopicSession servant à créer le publisher et les TextMessage
publisher
private TopicPublisher publisher
Objet Publisher servant à publier sur le topic "topic1"
Constructors
Demo
public Demo()
Le constructeur se charge d'initialiser la connexion au serveur OpenJMS et le TopicPublisher de la classe
Methods
run
public void run()
Envoie 10 message de type TextMessage contenant la chaîne "démo" sur le topic "topic1" à l'aide des membres privé
pubSession et publisher de la classe
Page 21
Package
sas
Page 22
sas.Main
sas
Class Main
java.lang.Object
|
+-sas.Main
public class Main
extends java.lang.Object
Constructors
Main
public Main()
Methods
DemoUnitTest
public void DemoUnitTest()
ConnectorUnitTest
public void ConnectorUnitTest()
MainTopicConnectorUnitTest
public void MainTopicConnectorUnitTest()
MainTopicSenderUnitTest
public void MainTopicSenderUnitTest()
MainTopicReceiverUnitTest
public void MainTopicReceiverUnitTest()
main
public static void main(java.lang.String args)
Page 23
Index
Index
Page 24
Index
INFO 16
initJndi 4
C
initPublisher 11
initSession 9
close 10
initSession 11
comment 13
initSubscriber 10
CONF 16
configProperties 3
J
Connector 3
ConnectorUnitTest 23
jmsConnect 7
Controler 18
jmsConnection 7
jndiContext 3
D
L
debug 5
DEBUG 6
level 13
Demo 21
loadConfigFile 4
DemoUnitTest 23
log 5
logMessage 5
E
M
error 5
ERROR 6
Main 23
main 23
F
MainTopicConnector 7
MainTopicConnectorUnitTest 23
filter 9
MainTopicReceiver 9
MainTopicReceiverUnitTest 23
G
MainTopicSender 11
MainTopicSenderUnitTest 23
getComment 15
messageCorrelationId 13
getConnection 8
messageId 13
getJmsMessage 14
getJndiContext 4
N
getLevel 15
getMessageCorrelationId 15
newSasMessage 10
getMessageId 14
getSasProperty 4
O
getSenderId 15
getSession 12
onMessage 10
getType 15
P
I
publisher 21
INFO 6
publisher 11
Page 25
Index
pubSession 21
R
run 21
run 10
S
SasMessage 14
senderId 13
sendMessage 12
session 9
session 11
setComment 14
setFilter 10
setLevel 14
setMessageCorrelationId 14
setSenderId 14
setType 14
subscriber 9
T
type 13
W
warning 5
WARNING 6
Watcher 19
Page 26
Téléchargement