Salut, a tous je veux faire une classe qui s'enregistre pour reagir aux evenement TOMCAT par exemple ma classe doit reagir imediatement lorsqu'une session se ferme ou devien inactive.
cordialement.
Salut, a tous je veux faire une classe qui s'enregistre pour reagir aux evenement TOMCAT par exemple ma classe doit reagir imediatement lorsqu'une session se ferme ou devien inactive.
cordialement.
pas très compliqué: configure Tomcat (dans le web.xml dela webapp) avec ça:
<listener>
<listener-class>mon.package.maservlet.MaServlet</listener-class>
</listener>
écris ta classe "MaServlet" de façon à ce qu'elle implémente HttpSessionListener (pour ma part j'en fais en plus une servlet, mais je ne crois pas que ce soit obligatoire).
Toute session créée ou terminée provoquera l'appel d'une méthode de ta classe.
Mrci beaucoup.
Mais pourrais-je avoir un petit exemple ou un tuto.
cordialement.
Voici une classe qui fait ce genre de choses. Je la simplifie pour enlever le code spécifique à mon entreprise, copyright oblige :-).
Je n'entre pas dans le détail du code, propre à l'architecture applicative que j'utilise. les méthodes qui t'intéressent sont sessionCreated et sessionDestroyed. N'oublie pas de mettre à jour le web.xml pour déclarer cette classe comme session listener.
En espérant que ça t'aide.
package xxx.xxx.xxx;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* Helper for an easy initialization of web technology aware facades.
* must be inherited to implement concrete classes.
* @author saloul
*/
public abstract class WebApplication extends HttpServlet implements HttpSessionListener {
/**
* General initializer for a web application.
* Takes care of the correct initialization of all required facades.
* Each facade actually is a singleton and may depend on the technology.
*/
public void init(ServletConfig config) throws ServletException {
//mettre ici le code pour initialiser l'architecture (ne marche que parce que cette classe est une servlet)
WebConfigurationManager.initialize(config.getServletContext());
LoggerFacade.initialize();
MonitorFacade.initialize();
WebUniqueIdManager.initialize();
WebContextManager.initialize();
WebServerFacade.initialize(config);
}
/**
* get the simple name of the application, as a String.
*/
public final String getApplicationName() {
return getClass().getSimpleName();
}
/**
* General initializer for a web session.
* Takes care of the correct initialization of all the session dependent components.
* These components may depend on the technology of the application.
*/
public void sessionCreated(HttpSessionEvent ev) {
//méthode appelée quand une session est créée
//new Session: create contextManager
RequestUniqueId id=UniqueIdManagerFacade.generateUniqueId(WebTools.getSession(ev));
ContextFacade.bindSessionContext(id, ev.getSession());
internalInitializeSession(ev);
}
/**
* General finalizer for a web session.
* Takes care of the correct finalization of all the session dependent components.
* These components may depend on the technology of the application.
*/
public void sessionDestroyed(HttpSessionEvent ev) {
//méthode appelée quand une session est invalidée
HttpSession ses=WebTools.getSession(ev);
TraceFacade.warn("Session "+ses.getId()+" has been destroyed");
RequestUniqueId id=UniqueIdManagerFacade.generateUniqueId(ses);
MonitorContext context=MonitorFacade.startRequest(id, "sessionDestroyed");
try {
ContextFacade.bindSessionContext(id, ev.getSession());
internalDisposeSession(ev);
}
finally {
MonitorFacade.completeRequest(context);
}
}
/**
* internal initialization of the application
*/
protected abstract void internalInitializeApplication(ServletConfig config);
/**
* internal initialization of the session
*/
protected abstract void internalInitializeSession(HttpSessionEvent ev);
/**
* internal disposal of the session
* @param ev
*/
protected abstract void internalDisposeSession(HttpSessionEvent ev);
}
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager