2009-10-28 7 views
0

Mon application a un peu d'installation coûteuse à faire quand elle démarre. Il semble que dès que je copie le fichier WAR dans les webapps, le fichier journal indique "Déploiement de l'archive de l'application web Navaid.jar", mais il ne fonctionne pas réellement jusqu'à ce que j'atteigne l'URL. Je préfère que la première personne à frapper l'url supporte le temps d'attente pour ce démarrage. Existe-t-il une méthode "onDeploy" que je pourrais utiliser ou quelque chose pour faire ce traitement, ou devrais-je simplement avoir copié le fichier, attendre quelques secondes, puis wget l'url?Existe-t-il un moyen pour que Tomcat démarre une application dès que le fichier WAR a été déployé?

Répondre

1

Mettre en oeuvre une classe avec l'interface ServletContextListener, puis déclarer comme auditeur dans votre web.xml:

<listener> 
    <listener-class> ...your class here... </listener-class> 
</listener> 

Votre classe sera appelé au démarrage (& à l'arrêt).

+0

Génial, ça marche. Maintenant, je dois juste comprendre comment bloquer les autres servlets jusqu'à ce que cela soit fait, mais c'est une autre question. –

+1

Aucune servlet ne sera invoquée par le conteneur jusqu'à ce que l'appel à votre ServletContextListener soit terminé. Voir http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContextListener.html –

0

Vous pouvez spécifier un couple de servlets à charger au démarrage dans votre fichier web.xml. Ils peuvent ensuite appeler différentes parties de votre application pour s'assurer qu'ils sont amorcés.

+0

Comment fait-on cela? –

Questions connexes