• Home
  • Docker
  • Kubernetes
  • Java
  • Ubuntu
  • Maven
  • Big Data
  • CI
  • Install
  • Samples
  • Archived
EJB | EJB Timers
  1. Introduction
  2. Créer une application qui utilise des Timers déclaratifs
  3. Créer une application qui utilise des Timers programmables
  4. Annotation @Schedule
  5. Interface TimerService
  6. Classe TimerConfig

  1. Introduction
    Les Timers permettent de planifier l'exécution asynchrones des tâches.
    Les Timers peuvent être configurés de façon déclarative (annotations) ou programmable (initiés par le code de l'application).

    Les Timers déclaratifs sont créés automatiquement par le container EJB.
    Les Timers programmables doivent être créés explicitement par le code de l'application en utilisant des méthodes de l'interface TimerService.

    Un Timer peut être planifiée pour s'exécuter à un temps précis ou à des intervalles répétitifs.

    La méthode (callback method) qui sera appelée par le Timer doit avoir une des deux signatures suivantes :

    L'objet Timer donne des informations sur le Timer en plus de fournir la méthode cancel() qui permet d'annuler le Timer.
  2. Créer une application qui utilise des Timers déclaratifs
    • Créer un projet Maven:

      Importez le projet dans votre éditeur du code (Eclipse, NetBeans, …).
      Vous pouvez nettoyer le projet et supprimer le code Java généré par Maven.

      Notes :
      Sur Linux, le caractère "\" permet d'écrire une commande sur plusieurs lignes.
      Sur Windows, il faut utiliser le caractère "^".

    • Créer une classe Java pour déclarer des Timers :

      - L'annotation @Schedule permet de designer la méthode (callback method) qui va être appelée automatiquement par le Timer créé par le container EJB.
      - L'annotation @Schedules permet de déclarer un groupe d'annotations @Schedule, chacune va correspondre à un Timer spécifique.

    • Créer, déployer et tester les Timers :
      Pour builder le projet il faut utiliser la commande Maven : "mvn install".
      Le fichier jar créé peut être packagé et déployé dans un EAR.
      Les Timers seront créés automatiquement par le container EJB.

      Si vous utilisez WebSphere WAS, vous pouvez vérifier que les Timers ont été bien créés en utilisant la commande : findEJBTimers.bat server1 -all

      Voici un exemple de log du fichier "SystemOut.log" de WebSphere WAS :

  3. Créer une application qui utilise des Timers programmables
    • Créer une classe Java pour déclarer des Timers :

      - L'annotation @Resource est utilisée pour injecter une instance de l'interface TimerService.
      - La méthode createSingleActionTimer de l'interface TimerService crée un Timer qui va être planifié pour une seule exécution.
      - L'annotation @Timeout permet de designer la méthode (callback method) qui va être appelée automatiquement par le Timer créé par le container EJB.
      - L'annotation @Timeout peut être utilisée une seule fois pour une classe donnée.

      Notes :
      - La méthode doScheduleTaskFirst va être appelée par le Timer déclaratif à toute les minutes.

      Voici un exemple de log du fichier "SystemOut.log" de WebSphere WAS :

  4. Annotation @Schedule
    L'annotation @Schedule offre un ensemble d'attributs qui peuvent être utilisées pour contrôler la planification du Timer.

    Code source de l'annotation @Schedule (JBoss) :

    - La valeur "*" représente toutes les valeurs permises pour l'attribut de l'annotation.
    - Une liste des valeurs (séparées par une virgule) indique un ensemble des valeurs permises pour l'attribut de l'annotation : "3,5,9".
    - Un intervalle des valeurs (séparées par un tiret) indique un ensemble des valeurs (toutes celles incluses dans l'intervalle) permises : "2-6".
  5. Interface TimerService
    L'interface TimerService fournit aux EJBs un accès au service du minuteur fournit par le container EJB.
    Le service du minuteur EJB permet aux Entités, stateless, singleton et MDBs de s'enregistrer pour un évènement de rappel par le minuteur :
    - à un moment précis,
    - après un temps écoulé déterminé,
    - ou après un intervalle de temps spécifié.

    Méthodes de l'interface TimerService :
    • Cette méthode retourne tous les Timers (déclaratifs et programmables) actifs associés au bean :


    • Cette méthode retourne tous les Timers (déclaratifs et programmables) actifs associés aux beans appartenant au module dans lequel le bean appelant est packagé :


    • Ces deux méthodes créent des Timers qui expirent après une durée déterminée :


    • Ces deux méthodes créent des Timers qui expirent à un moment donné dans le temps :


    • Ces deux méthodes créent des Timers qui expirent après une durée déterminée, et dont les expirations subséquentes se produiront après l'intervalle spécifié :


    • Ces deux méthodes créent des Timers qui expirent à un moment donné dans le temps, et dont les expirations subséquentes se produiront après l'intervalle spécifié :


    • Ces deux méthodes créent des Timers basés sur l'expression de planification ScheduleExpression :

  6. Classe TimerConfig
    L'objet TimerConfig peut être utilisé pour définir des paramètres de configuration supplémentaires du Timer.

    Méthodes de la classe TimerConfig :
    • Constructeurs :
      - Le paramètre info permet d'associer au Timer un objet spécifique.
      - Pour le constructeur sans paramètres, l'objet correspondant info est initialisé par défaut à la valeur null.

      - Le paramètre persistent détermine si le Timer persistent.
      - Pour le constructeur sans paramètres, la propriété correspondante persistent est initialisée par défaut à la valeur true.


    • get/set l'objet info :


    • get/set la propriété persistent :

© 2025  mtitek