Ecouteurs et événements de cycle de vie d'une application

Désormais partie de l'API Servlet, les écouteurs (listeners) et événements de cycle de vie des applications permettent de signaler aux écouteurs intéressés tout changement intervenant dans les contextes de servlet et les sessions. Par exemple, vous pouvez faire en sorte que les utilisateurs reçoivent une notification lorsque des attributs sont modifiés ou en cas de création ou de destruction de sessions ou de contextes de servlet.

Les écouteurs de cycle de vie offrent au développeur d'applications un meilleur contrôle des interactions avec les objets ServletContext et HttpSession. Les écouteurs du contexte de servlet gèrent les ressources au niveau de l'application. Les écouteurs de la session gèrent les ressources associées à une série de demandes émanant d'un même client. Des écouteurs sont disponibles pour les événements de cycle de vie et pour les événements de modification d'attribut. Le développeur d'écouteurs crée une classe qui implémente l'interface d'écouteur javax correspondant à la fonctionnalité d'écouteur souhaitée.

Au démarrage de l'application, le conteneur crée par introspection une instance de votre classe d'écouteur et l'enregistre auprès du générateur d'événements approprié.

Lorsqu'un contexte de servlet est créé, la méthode contextInitialized de votre classe d'écouteur est appelée et crée la connexion de base de données réservée à l'usage des servlets de votre application, si ce contexte est effectivement destiné à l'application. Tous les écouteurs du contexte de servlet sont notifiés de l'initialisation du contexte avant qu'un servlet ne soit initialisé dans l'application Web.

Lorsque le contexte de servlet est détruit, votre méthode contextDestroyed est appelée et libère la connexion de base de données, si ce contexte est effectivement destiné à votre application. Vous devez détruire tous les servlets avant que les écouteurs du contexte de servlet ne soient notifiés de la destruction du contexte.

Les notifications envoyées aux écouteurs de la session précèdent les notifications envoyées aux écouteurs du contexte.

Classes d'écoute du contexte de servlet et des modifications de session

Les méthodes suivantes sont définies dans l'interface javax.servlet.ServletContextListener :
  • void contextInitialized(ServletContextEvent)

    Signale que l'application web est prête à traiter des demandes. Placez du code dans cette méthode pour déterminer si le contexte créé est destiné à votre application Web et, si tel est le cas, allouez une connexion de base de données et stockez-la dans le contexte du servlet.

  • void contextDestroyed(ServletContextEvent)

    Signale que le contexte du servlet est sur le point de s'arrêter. Placez du code dans cette méthode pour déterminer si le contexte créé est destiné à votre application Web et, si tel est le cas, fermez la connexion de base de données stockée dans le contexte du servlet.

Les méthodes suivantes sont définies dans l'interface javax.servlet.ServletRequestListener :
  • public void requestInitialized(ServletRequestEvent re)
    • Signale que la demande arrive à portée

      Une demande arrive à portée lorsqu'elle est sur le point d'entrer dans le premier filtre de la chaîne de filtres qui traite la demande.

  • public void requestDestroyed(ServletRequestEvent re)
    • Signale que la demande va devenir hors de portée

      Une demande devient hors de portée lorsqu'elle quitte le dernier filtre de la chaîne de filtres.

Les interfaces d'écouteur (listener) suivantes sont définies dans le package javax.servlet :

  • ServletContextListener
  • ServletContextAttributeListener

L'interface de filtre suivante est définie dans le package javax.servlet :

  • Interface FilterChain - méthodes : doFilter()

Les classes d'événements suivantes sont définies dans le package javax.servlet :

  • ServletContextEvent
  • ServletContextAttributeEvent

Les interfaces suivantes sont définies dans le package javax.servlet.http :

  • HttpSessionListener
  • HttpSessionAttributeListener
  • HttpSessionActivationListener

La classe d'événements suivante est définie dans le package javax.servlet.http :

  • HttpSessionEvent

Exemple : Création d'un programme d'écoute de contexte de servlet avec com.ibm.websphere.DBConnectionListener.java

L'exemple suivant montre comment créer un module d'écoute de contexte de servlet :

package com.ibm.websphere;

import java.io.*;
import javax.servlet.*;

public class DBConnectionListener implements ServletContextListener 
{
     // implémenter la méthode d'initialisation du contexte (obligatoire)
    void contextInitialized(ServletContextEvent sce)
    {
    }

     // implémenter la méthode destroy du contexte (obligatoire)
    void contextDestroyed(ServletContextEvent sce)
    {
    }
}

Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cweb_sctxl
Nom du fichier : cweb_sctxl.html