2008-11-22 6 views
2

J'ai une application web simple, avec quelques pages jsp, servlets et pojo. Je veux initialiser le pool de connexions avant toute demande. Quelle est la meilleure façon de procéder? Cela peut-il être fait lorsque l'application est déployée pour la première fois ou devez-vous attendre la première demande? Qu'en est-il une servlet de démarrage de base pour initialiser le pool de connexion?Initialisation Java Web App

+0

Veuillez ne pas être contrarié par mon changement de repassage. Bien que vous et moi (et d'autres aussi) sachions que c'est vraiment l'initialisation, la balise acceptée est l'initialisation. – MPelletier

Répondre

8

Utilisez un ServletContextListener et déclarez-le correctement dans le fichier web.xml. Cette façon est préférable à une servlet de démarrage. C'est plus organisé, et votre intention est évidente. Il est également garanti de s'exécuter avant toute demande. Il vous donne également un crochet d'arrêt pour vider la piscine.

Voici un extrait de mon web.xml, par exemple:

<listener> 
    <listener-class> 
    com...ApplicationListener 
    </listener-class> 
</listener> 

et voici un extrait de code de la classe elle-même. Assurez-vous d'attraper les exceptions afin qu'elles ne se propagent pas à votre application serveur et fournissez des messages de journal utiles - ceux-ci vous aideront lorsque vous tracez votre application.

public class ApplicationListener implements ServletContextListener { 

    private ServletContext sc = null; 

    private Logger log = Logger 
    .getLogger(ApplicationListener.class); 

    public void contextInitialized(ServletContextEvent arg0) { 
    this.sc = arg0.getServletContext(); 
    try { 
     // initialization code 
    } catch (Exception e) { 
     log.error("oops", e); 
    } 
    log.info("webapp started"); 
    } 

    public void contextDestroyed(ServletContextEvent arg0) { 
    try { 
     // shutdown code 
    } catch (Exception e) { 
     log.error("oops", e); 
    } 
    this.sc = null; 
    log.info("webapp stopped"); 
    } 

} 

Voir l'api here et des exemples here.

+0

Vous considérez "oops" un message utile? :-) – extraneon

+2

c'est l'indication la plus universellement acceptée que quelque chose est vraiment faux :) – Yoni