Bon j'ai trouvé un solution je try/catch, je sais pas si c'est très propre mais ça marche

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
63
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 = "pages/accueil/timeout.html";
	//private static final String LOGIN_PAGE = "/pages/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());
					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; 
					} 
				} 
			}
			try{
				filterChain.doFilter(request, response);
			}catch (Exception e) {
				//redériger vers la page d'accueil ... 
				String timeoutUrl = hRequest.getContextPath() + "/" + ACCUEIL_PAGE; 
				log.info("Session is invalid! " + e.getMessage()); 
				hResponse.sendRedirect(timeoutUrl); 
				return; 
			}
		}
	}
 
	private boolean checkSession(HttpServletRequest request) {
		return request.getRequestedSessionId() != null
				&& !request.isRequestedSessionIdValid();
 
	}
 
	public void destroy() {
	}
 
}