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 :

Filtre timeout erreur de faceContext


Sujet :

JSF Java

  1. #1
    Membre habitué Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Points : 157
    Points
    157
    Par défaut Filtre timeout erreur de faceContext
    J'ai suivit le blog de Djo.mos [Java] Gestion des sessions expirées dans JSF (rebelote) pour faire un filtre et gérer les session timeout. Je l'ai adapté à ma situation. qui est de redirigé sur ma page d'index.jsf. Mais j'obtiens une erreur facecontxt == null. Si quelqu'un à une idée (ou plusieurs ^^)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    java.lang.NullPointerException: FacesContext is null
    	org.ajax4jsf.context.AjaxContext.getCurrentInstance(AjaxContext.java:126)
    	org.ajax4jsf.context.AjaxContext.getCurrentInstance(AjaxContext.java:111)
    	org.ajax4jsf.component.AjaxViewRoot.getViewId(AjaxViewRoot.java:576)
    	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:104)
    	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    	javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
    	com.elosi.norauto.rejetParebrise.ihm.filtre.TimeoutFilter.doFilter(TimeoutFilter.java:44)
    	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
    	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
    	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
    	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    package com.elosi.norauto.rejetParebrise.ihm.filtre;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.log4j.Logger;
    import org.springframework.web.context.WebApplicationContext;
    import org.springframework.web.context.support.WebApplicationContextUtils;
    
    public class TimeoutFilter implements Filter {
    	private static final Logger log = Logger.getLogger(TimeoutFilter.class);
    	private static final String ACCUEIL_PAGE = "../accueil/index.jsf";
    
    	public void init(FilterConfig filterConfig) throws ServletException {
    	}
    
    	public void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) throws IOException, ServletException {
    		if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) { 
    			HttpServletRequest hRequest = (HttpServletRequest) request; 
    			HttpServletResponse hResponse = (HttpServletResponse) response; 
    			
    			if (checkSession(hRequest)) { 
    				if (hRequest.getSession(false) != null) { 
    					final WebApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(hRequest.getSession(false).getServletContext());
    					System.out.println(ac);
    					if (ac == null) { 
    						//redériger vers la page d'accueil ... 
    						String timeoutUrl = hRequest.getContextPath() + "/" + ACCUEIL_PAGE; 
    						log.info("Session is invalid! redirecting to timeoutpage : {}"); 
    						hResponse.sendRedirect(timeoutUrl); 
    						return; 
    					} 
    				} 
    			}  
    		}
    		filterChain.doFilter(request, response);
    	}
    
    	private boolean checkSession(HttpServletRequest request) {
    		return request.getRequestedSessionId() != null
    				&& !request.isRequestedSessionIdValid();
    
    	}
    
    	public void destroy() {
    	}
    
    }
    Java'ldire à tout le monde

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    pourquoi t'utilise le faceContext dans le filtre? tu as l'objet de request et session..
    tu peux mettre le lien de l'article que tu as lu?

  3. #3
    Membre habitué Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Points : 157
    Points
    157
    Java'ldire à tout le monde

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    interessant,
    mais tu peux verifier si le bean existe en session en utilisant simplement l'objet session..sans passer par le context de spring
    je ne vois pas ou tu utilises le context JSF, je suis pas bien reveillé encore..

  5. #5
    Membre habitué Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Points : 157
    Points
    157
    Par défaut
    Le but c'est pas trop de vérifier si le bean existe mais de catcher les timeout donc de vérifier si la session est pas expoiré
    Java'ldire à tout le monde

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    mais je ne vois pas le faceContext..
    peu eter qq chose dans la config de spring,
    si dj-mos est de passage, il peut nous dire s'il a testé la méthode avec myfaces 1.2 et richfaces ou JSF 1.2 et richfaces 3.2.0

    sinon tu peux y'avait un probleme avec la version 3.2.0 et JSF 1.2.un jira a été ouvert, le probleme semble etre corrigé, mais pas eu le temps de tester, si ma mémoire est bonne, y'a dans le FAQ comment utiliser onExpired avec richfaces pour gerer l'expiration de la session...

  7. #7
    Membre habitué Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Points : 157
    Points
    157
    Par défaut
    Toujours pas de solution
    Java'ldire à tout le monde

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    tu utilises quel version de JSF et de Richfaces?

  9. #9
    Membre habitué Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Points : 157
    Points
    157
    Par défaut
    Sun RI 1.2_08 et Richfaces 3.2.1
    Java'ldire à tout le monde

  10. #10
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Citation Envoyé par Rizzen Voir le message
    Sun RI 1.2_08 et Richfaces 3.2.1
    il existe une solution avec richfaces, modalPanel qui se lance lors de l'expiration de session à l'aide de A4J.AJAX.onExpired!
    mais ça ne marche que pour la 3.2.2 qui est encore en version CR2 maintenant..

  11. #11
    Membre habitué Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Points : 157
    Points
    157
    Par défaut
    Je ne peux pas me permettre d'utiliser autre chose que des release
    Java'ldire à tout le monde

  12. #12
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Citation Envoyé par Rizzen Voir le message
    Je ne peux pas me permettre d'utiliser autre chose que des release
    faut attendre un peu..
    tu trouvera l'explication sur la FAQ.

  13. #13
    Membre habitué Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Points : 157
    Points
    157
    Par défaut
    Sauf que j'ai un délai je fais pas ça pour m'amuser
    Java'ldire à tout le monde

  14. #14
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour (Et désolé pour le retard)

    A priori, le problème ne vient pas du filtre, du moins pas directement.

    C'est tout à fait naturel que tu aies
    com.elosi.norauto.rejetParebrise.ihm.filtre.TimeoutFilter.doFilter(TimeoutFilter.java:44)
    qui correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    filterChain.doFilter(request, response);
    Dans le stackTrace ... d'ailleurs tu l'auras dans n'importe quel stackTrace puisque ce filtre intercepte toutes les requêtes.

    Par contre, il se peut que ce filtre soit indirectement responsable de l'erreur ...

    Bref, tu peux nous montrer le stackTrace complet s'il te plaît ? Tu devrais avoir des kilomètres de caused by ....

  15. #15
    Membre habitué Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Points : 157
    Points
    157
    Par défaut
    Bonjour (c'est pas grave ^^)

    Voilà la trace lors d'un "entrée" dans la barre d'adresse pour réafficher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    2 sept. 2008 11:32:18 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet Faces Servlet a g�n�r� une exception
    java.lang.NullPointerException: FacesContext is null
    	at org.ajax4jsf.context.AjaxContext.getCurrentInstance(AjaxContext.java:126)
    	at org.ajax4jsf.context.AjaxContext.getCurrentInstance(AjaxContext.java:111)
    	at org.ajax4jsf.component.AjaxViewRoot.getViewId(AjaxViewRoot.java:576)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:104)
    	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at com.elosi.norauto.rejetParebrise.ihm.filtre.TimeoutFilter.doFilter(TimeoutFilter.java:48)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
    	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
    	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
    	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    	at java.lang.Thread.run(Unknown Source)
    testFiltre
    testFiltre test 1
    testFiltre test 2
    J'ai cette erreur par moment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    02-09-2008 11:36:40:383 3656039 ERROR org.ajax4jsf.webapp.BaseXMLFilter  - Exception in the filter chain
    javax.servlet.ServletException: viewId:/pages/anomalies/traitement.jsf - View /pages/anomalies/traitement.jsf could not be restored.
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:270)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at com.elosi.norauto.rejetParebrise.ihm.filtre.TimeoutFilter.doFilter(TimeoutFilter.java:48)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
    	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
    	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
    	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: javax.faces.application.ViewExpiredException: viewId:/pages/anomalies/traitement.jsf - View /pages/anomalies/traitement.jsf could not be restored.
    	at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:186)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:104)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
    	... 21 more
    2 sept. 2008 11:36:40 com.sun.faces.lifecycle.Phase doPhase
    GRAVE: JSF1054: (Phase ID: RESTORE_VIEW 1, View ID: ) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@14b43d]
    2 sept. 2008 11:36:40 org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: "Servlet.service()" pour la servlet Faces Servlet a g�n�r� une exception
    javax.faces.application.ViewExpiredException: viewId:/pages/anomalies/traitement.jsf - View /pages/anomalies/traitement.jsf could not be restored.
    	at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:186)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:104)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at com.elosi.norauto.rejetParebrise.ihm.filtre.TimeoutFilter.doFilter(TimeoutFilter.java:48)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
    	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
    	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
    	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    	at java.lang.Thread.run(Unknown Source)
    Java'ldire à tout le monde

  16. #16
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Est ce que tu utilises Spring pour manager tes beans JSF ? Si c'est pas le cas, alors faut virer la partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    final WebApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(hRequest.getSession(false).getServletContext());
    					System.out.println(ac);
    					if (ac == null) {
    Autre chose: n'utilises pas une page JSF comme page de time-out.

    Aussi, tu as simplifié un peu beaucoup trop le filtre original

    Par exemple, tu ne testes plus si c'est une ressource à protéger ou pas. C'est grave car ta version du filtre va même bloquer la plage de login car l'utilisaeur n'est pas connecté ...

    (Si t'as mofié le filtre entre temps, reposter son code serait vraiment utile).

  17. #17
    Membre habitué Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Points : 157
    Points
    157
    Par défaut
    Je manage mes bean jsf avec Spring

    Voici la dernière version du filtre. Au niveau de la redirection je balance sur un page hmtl qui me redirige sur la page d'accueil. (La page d'accueil fait la connexion automatiquement via un webservice par rapport à la session windows de la personne car c'est une application intranet)

    Mon objectif était que si la session est timeOut, je redirige sur la page d'accueil pour relogger la personne et qu'elle puisse continuer à travailler.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) throws IOException, ServletException {
    		System.out.println("testFiltre");
    		if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) { 
    			HttpServletRequest hRequest = (HttpServletRequest) request; 
    			HttpServletResponse hResponse = (HttpServletResponse) response; 
    			System.out.println("testFiltre test 1");
    			if (checkSession(hRequest)) { 
    				System.out.println("testFiltre test 2");
    				if (hRequest.getSession(false) != null) { 
    					System.out.println("testFiltre test 3");
    					final WebApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(hRequest.getSession(false).getServletContext());
    					System.out.println(ac);
    					if (ac == null) { 
    						System.out.println("testFiltre test 4");
    						//redériger vers la page d'accueil ... 
    						String timeoutUrl = hRequest.getContextPath() + "/" + ACCUEIL_PAGE; 
    						log.info("Session is invalid! redirecting to timeoutpage : {}"); 
    						hResponse.sendRedirect(timeoutUrl); 
    						return; 
    					} 
    				} 
    			}  
    		}
    		filterChain.doFilter(request, response);
    	}
     
    	private boolean checkSession(HttpServletRequest request) {
    		return request.getRequestedSessionId() != null
    				&& !request.isRequestedSessionIdValid();
     
    	}
    Java'ldire à tout le monde

  18. #18
    Membre habitué Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Points : 157
    Points
    157
    Par défaut
    Je suis toujours à la recherche d'une solution, si quelqu'un à une piste ?
    Java'ldire à tout le monde

  19. #19
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    qu'est ce qui change dans ton environnement par rapport à la solution de djo.mos?

  20. #20
    Membre habitué Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Points : 157
    Points
    157
    Par défaut
    Tout est expliqué juste au dessus
    Java'ldire à tout le monde

Discussions similaires

  1. [AC-2003] Problème filtres multiples - Erreur 2001
    Par themaskedduck dans le forum VBA Access
    Réponses: 11
    Dernier message: 14/01/2011, 10h06
  2. Timeout Gateway Timeout erreur 504
    Par poupouce5 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 06/02/2009, 17h42
  3. Réponses: 7
    Dernier message: 20/11/2008, 10h58
  4. erreur sur un non filtre
    Par nico.chev dans le forum Access
    Réponses: 1
    Dernier message: 20/09/2005, 12h16
  5. Erreur d'expression arithmetique et filtre
    Par smail21 dans le forum Bases de données
    Réponses: 11
    Dernier message: 24/08/2005, 01h38

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