submarine.core
Interface ListeningFunction
- All Superinterfaces:
- SubmiterAware, XMLConfigurable
- All Known Implementing Classes:
- InternalListener, XMLListener, SubMLListener
- public interface ListeningFunction
- extends XMLConfigurable, SubmiterAware
Cette interface est implémentée par des classes qui soumettent des messages au
système EAI en attendant des requêtes de leurs clients.
Par exemple on peut imaginer un SoapListener, qui écoute sur un port tcp/ip
l'arrivée de messages à destination du BusEAI.
Autre exemple, Un JMSListener qui est client de notifications d'une file de
messages JMS et qui transmet ces messages au Systeme EAI.
Quand utiliser ? :
Seul EAISystem utilise cette interface pour initialiser les ListeningFunctions
déclarées dans la configuration, puis les lancer dans un Thread (voir création
d'une ListeningFunction
, et lancement
d'une ListeningFunction
.
Quand implémenter ? :
Cette interface doit être implémentée si vous devez effectuer un connecteur sur
un système tiers qui oblige le programme à se mettre en attente d'une
notification. Dans d'autre cas vous préfèrerez
PoolingFunction
.
Cette interface hérite de XMLConfigurable
pour son initialisation à
partir d'un élément XML. Le schéma XML de l'initialisation est totalement
libre, elle doit seulement être limitée à cet
élément et à ses descendants.
Cette interface hérite aussi de SubmiterAware
, qui permettra à votre
connecteur de recevoir juste après son initialisation la référence sur
l'interface qui permettra la soumission de messages
à l'EAI.
Method Summary |
void |
listen()
Se met en attente d'évènements externes pour toute la durée de vie de la
ListeningFunction. |
listen
public void listen()
- Se met en attente d'évènements externes pour toute la durée de vie de la
ListeningFunction.
L'implémentation de listen doit être bloquante et ne doit se terminer que dans
l'un des deux cas suivants:
- Le thread qui a exécuté listen() a été interrompu. Voir
InterruptedException
.
- Des règles spécifiques à l'implémentation de la ListeningFunction lui
impose de se terminer.
Pour toutes autres raison (Exception non bloquante, timeout, ...) la
ListeningFuntion doit rester active. La ListeningFunction doit tester de
manière régulière (5 sec au max) l'état d'interruption de son Thread!
En d'autre mots, il est conseillé d'implémenter une ListeningFunction de la
manière suivante:
while ( !Thread.interrupted() ) try {
// votre code ici ... durant moins de 5 secondes.
} catch( Exception e ) {
// Traitement de l'exception
}