2010-05-06 6 views
4

Mon application Web sera déployée en tant que package WAR dans une instance de Jetty. Il doit effectuer beaucoup de mise en cache avant de servir les requêtes. Comment puis-je appeler la méthode de mise en cache avant toute autre chose? est le principal vide void() dans la norme de l'application web?Comment initialiser une application Web?

+1

Si vous voulez que les gens répondent à vos questions s'il vous plaît accepter quelques réponses –

Répondre

4

Une méthode standard (ancienne) consiste à coder une servlet qui s'occupe de l'initialisation dans sa méthode init(). Vous forcer à être initialisé au démarrage de l'application en ajoutant une load-on-startup valeur positive dans votre web.xml

<servlet> 
     <servlet-name>myinit</servlet-name> 
     <servlet-class>com.example.MyInitServlet</servlet-class> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 

Aujourd'hui, il est plus fréquent d'avoir un récipient à grains comme le Printemps, qui prend soin de ce genre de choses (instanciation services objets, préchargement de données partageables pouvant être mises en cache, etc.).

Note: cette recette est pour les webapps en général, pas spécifique à Jetty.

+0

J'aime cette solution parce que je peux l'utiliser avec n'importe quel serveur d'application web. Je vais avoir besoin d'une servlet factice pour ça. Existe-t-il un moyen d'effectuer une telle initialisation sans implémenter une servlet? Y a-t-il un static void principal() pour les applications web? – Gatis

+1

Il semble que l'ajout d'un ServletContextListener est tout ce que je veux. – Gatis