IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

JSF : Page d'erreur quand le serveur est éteint


Sujet :

JSF Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut JSF : Page d'erreur quand le serveur est éteint
    Bonjour,

    je travail sur une application développée à l'aide de JSF/Primefaces sur Eclipse et ma tâche actuelle est d'afficher une page d'erreur côté client si mon serveur Tomcat ne répond plus.

    J'ai un projet "MonProjetWar" qui contient :

    - un WEB-INF/faces-config.xml

    - un WEB-INF/web.xml

    Un autre projet "MonProjetWeb" qui serait un projet "fragment" (je ne sais pas ce que c'est vraiment et je ne suis pas sur le projet depuis assez longtemps pour savoir d'où vient ce choix d'architecture) et qui contient :

    - un src/main/java qui contient toutes mes classes Java (Bean, Validator, etc...)

    - un src/main/webapp/META-INF qui contient :

    -- tout mes fichiers CSS/XHTML/JS/Images/etc...

    -- un fichier web-fragment.xml

    En faisant des recherches sur internet j'ai essayé plusieurs pistes. La plus fiable me semble d'ajouter dans le web.xml (celui du projet WAR) les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<error-page>
    	    <error-code>500</error-code>
    	    <location>/WEB-INF/erreur500.xhtml</location>
    	</error-page>
    (j'ai une page erreur500.xhtml au même niveau que le web.xml)

    Mais ça ne fonctionne pas. Auriez-vous une idée de ce que je pourrai faire ? Merci d'avance.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Si ton serveur est arrêté ou qu'il ne répond pas pour n'importe quel raison, comment veux-tu qu'il puisse répondre une page qui affiche cet état ?

    En général, les conteneurs de servlet du type Tomcat ne sont pas directement accessibles, mais accessibles via un proxy ou reverse proxy (un serveur Apache par exemple) et c'est ce dernier qui pourra justement répondre une page particulière si le Tomcat ne répond pas.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Merci pour votre réponse.
    Je pense comprendre ce que vous me dite.

    Donc, si je comprend bien la solution serait peut-être de ne pas tenter d'accéder à une autre page mais d'embarquer cette page d'erreur et de changer sa propriété CSS "display" en fonction des besoins. Vous connaissez une meilleure solution ?
    Merci

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par paladice Voir le message
    Donc, si je comprend bien la solution serait peut-être de ne pas tenter d'accéder à une autre page mais d'embarquer cette page d'erreur et de changer sa propriété CSS "display" en fonction des besoins.
    Ça ne fonctionne pas ça, ou quand ça pourrait, on peut faire quelque chose de plus sympa.

    Ça ne fonctionne pas ça (sauf éventuellement pour les liens internes (<A href> mais aussi form get/post...) qu'il faudrait intercepter) parce qu'imagine celui qui a un lien vers ton site dans ses favoris et qui clique dessus lorsque le serveur est injoignable : le navigateur affiche sa propre page qui dit que l'URL n'est pas joignable, parce que simplement l'URL ne répond pas. Pareil si on tape une URL directement dans la barre d’adresse, ou sur tout autre système d'accès par une autre page que celle de ton site. Ou alors il faudrait que la navigateur puisse être paramétré pour (ça m'étonnerait que ça existe mais bon pose la question sur le forum web client, des fois que).

    Quand ça pourrait, on pourrait faire quelque chose de plus sympa : là, je parle de ce qui se fait en AJAX, ou via des SPA. Dans ce cas, on affiche pas une page spéciale, on affiche dans une zone de la page, un truc qui dit que le serveur est indisponible, genre une icône par exemple.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 391
    Points : 185
    Points
    185
    Par défaut
    Merci encore pour tes réponses.

    Quand ça pourrait, on pourrait faire quelque chose de plus sympa : là, je parle de ce qui se fait en AJAX, ou via des SPA. Dans ce cas, on affiche pas une page spéciale, on affiche dans une zone de la page, un truc qui dit que le serveur est indisponible, genre une icône par exemple.
    Je crois que c'est exactement ce que j'ai, des singles pages chargées avec l'aide d'ajax. Je vais essayer de voir ce que j'arrive à faire avec les informations que vous m'avez donné. Merci =D

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par paladice Voir le message
    Je crois que c'est exactement ce que j'ai, des singles pages chargées avec l'aide d'ajax.
    C'est de l'Angular ou du React ?

  7. #7
    Membre régulier
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2015
    Messages : 62
    Points : 82
    Points
    82
    Par défaut
    Hello Paladice.

    Il faut bien comprendre que la solution que te donne joel.rodrigo est une façon élégante d'afficher des erreurs de ton application quand celle ci répond.
    Un 404 renvoyé par ton application veut dire que ton application n'arrive pas à trouver la page que l'utilisateur demande (au travers ton code)
    Tu peux donc rediriger l'utilisateur vers une autre page cependant c'est toujours ton application qui définie le comportement.

    Le danger des singleapps (AngularJS, ...) c'est que si l'utilisateur est déjà venu, il utilisera le code front stocké en cache sur son ordinateur et tu pourra faire en sorte dans ce code que si tes appels ajax ne répondent pas (serveur éteint) alors un affichage particulier se passe. Par contre qu'en est-il d'un utilisateur qui n'est jamais venu ? il va se taper la page 404 du navigateur car ton site sera injoignable.

    C'est pourquoi joel te donne ce conseil :

    En général, les conteneurs de servlet du type Tomcat ne sont pas directement accessibles, mais accessibles via un proxy ou reverse proxy (un serveur Apache par exemple) et c'est ce dernier qui pourra justement répondre une page particulière si le Tomcat ne répond pas.
    Ton serveur proxy / reverse proxy va prendre en charge en premier la requête de ton utilisateur et la transférer à ton serveur tomcat.
    Si celui-ci ne répond pas alors c'est ton proxy / reverse proxy qui va rediriger vers une autre page qui sera ta page 404 statique.

Discussions similaires

  1. rediriger vers une page web quand mon serveur est offline
    Par mapmip dans le forum Hébergement
    Réponses: 1
    Dernier message: 21/01/2014, 00h53
  2. Cron job quand le serveur est en veille ou eteint
    Par Ismatus1 dans le forum Linux
    Réponses: 1
    Dernier message: 23/11/2011, 23h08
  3. Client LDAP quand le serveur est sous Windows
    Par deborah95 dans le forum Linux
    Réponses: 1
    Dernier message: 09/11/2009, 22h32
  4. Eviter #Erreur quand ma cellule est vide
    Par MartinoDevelop dans le forum VBA Access
    Réponses: 5
    Dernier message: 04/12/2008, 11h25
  5. message d'erreur quand un champs est vide
    Par VIRGINIE87 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 22/02/2007, 13h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo