2011-04-28 6 views
4

Je suis à la recherche maintenant quelques jours pour la réponse à la question suivante:Afficher la configuration après « initialisation du contexte a échoué »

J'ai un Spring 2.5 webapplication et je veux montrer un certain écran de configuration si l'initialisation du contexte du printemps a échoué. Dans cet écran de configuration ils peuvent regarder pourquoi le serveur ne démarre pas et peut-être faire quelques changements (télécharger le nouveau fichier config.properties)

Mais comment puis-je l'implémenter intelligemment? Est-ce que Spring a déjà quelque chose comme ça ou dois-je étendre le ContextLoader par exemple?

J'ai essayé quelque chose dans le web.xml comme ceci: mais cela ne semble pas fonctionner:

<error-page> 
     <error-code>404</error-code> 
     <location>/public/setup.jsp</location> 
    </error-page> 

Solution:

Je commence par web.xml par défaut et après la l'installation est terminée Je remplace le web.xml par le bon 'application' web.xml. Parce que le fichier web.xml est remplacé, les serveurs redémarrent. Cela fonctionne très bien. Merci encore pour vos réponses.

Répondre

3

Voici trois idées:

  • Modifier le chargeur de contexte pour attraper l'exception, et ajouter une servlet/cartographie au conteneur qui redirige l'ensemble des applications pertinentes au servlet chargée dynamiquement. Consultez ce fil d'instructions de débordement de pile pour créer une servlet dynamique: Dynamically add a servlet to the servletConfig
  • Vous pouvez également définir une servlet standard qui gère toutes les demandes et les transmet à la page de configuration. Vous pouvez alors avoir un haricot de printemps qui supprime ce servlet et le mapper du contexte quand il est fini d'initialiser (vous pouvez mettre ce code dans le crochet postInitalize d'un haricot de printemps.)
  • Vous pouvez également essayer de créer un écouteur qui vérifie pour voir si un contexte d'application valide existe et supprime les sorties de mappage/servlet "par défaut".

Je ne pense pas qu'il existe des mécanismes standard pour ajouter/retirer des servlets et mapper du conteneur. Mais il semble que la plupart des conteneurs ont des API qui le font.

Il y a une troisième voie que vous avez suggérée. Ce qui suppose que si une erreur 404 s'est produite, le servlet n'a pas pu démarrer. Si vous allez dans cette voie, je pense que vous allez rencontrer le problème que les erreurs 404 peuvent se produire juste parce que l'utilisateur a fait le gros doigt de l'URL.

+0

Super message .. Je vais vous faire savoir ce que je vais mettre en œuvre et comment cela fonctionne – Michel

+1

Je tiens à vous faire savoir que implémente une autre solution. Je commence avec un fichier web.xml par défaut et une fois l'installation terminée, je remplace le fichier web.xml par l'application web.xml. Parce que le fichier web.xml est remplacé, les serveurs redémarrent. Cela fonctionne très bien. Merci encore pour votre réponse. – Michel

+0

@michel c'est une bonne idée. Je vais le garder à l'esprit. Merci pour la mise à jour –

Questions connexes