Jsf + tempo da sessao + abrir login novamente

Bom dia galera, estou com alguns problemas relacionados a tempo de sessao em JSF e preciso muito da ajuda de vcs.

Estou colocando um tempo para a sessao aspirar como mostrado abaixo: //web.xml

5

Quando a sessao aspira todos meus objetos ficam null, tudo ta blz é isso mesmo, mas como que eu posso fazer para que quando a sessao aspirar e o usuario tentar mexer no sistema abra entao novamente a tela de login para o usuario digitar novamente o nome e a senha.

Galera muito obrigado, feliz 2010.

Nesse caso crie um filter que faça essa validação para você!!!

Exemplo de filter q redireciona qdo sessão ñ é mais válida…

package myServlets;


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;

public class SecurityFilter implements Filter
 {
public static final String loginPage = "LoginPage.html";

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain filterChain) throws IOException, ServletException {

            System.out.println("Filtrando");

        if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {

            HttpServletRequest httpServletRequest = (HttpServletRequest) request;
            HttpServletResponse httpServletResponse = (HttpServletResponse) response;


            if (isSessionInvalid(httpServletRequest)) {
                  String timeoutUrl = httpServletRequest.getContextPath() + "/" + loginPage;
                  httpServletResponse.sendRedirect(timeoutUrl);
                  return;
            }

        }

        filterChain.doFilter(request, response);

    }   

    private boolean isSessionInvalid(HttpServletRequest httpServletRequest) {

        boolean sessionInValid = (httpServletRequest.getRequestedSessionId() != null)
                && !httpServletRequest.isRequestedSessionIdValid();

        return sessionInValid;

    }

    public void init(FilterConfig filterConfig) throws ServletException {
      System.out.println("Inicicando Sessão");
    }

    public void destroy() {
       System.out.println("Sessão destruida!");
    }
 	/**
 	 * Utilizado para interceptar requisições para realizar um filtro de acesso a aplicação.
 	 *
 	 * @throws java.io.IOException
 	 * @throws javax.servlet.ServletException
 	 *
 	 * @param <b>request </b> ServletRequest
 	 * @param <b>response </b> ServletResponse
 	 * @param <b>chain </b> FilterChain
 	 */

 }

[quote=viniciusfaleiro]Exemplo de filter q redireciona qdo sessão ñ é mais válida…

[code]
package myServlets;

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;

public class SecurityFilter implements Filter
{
public static final String loginPage = “LoginPage.html”;

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain filterChain) throws IOException, ServletException {

        System.out.println("Filtrando");

    if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {

        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        HttpServletResponse httpServletResponse = (HttpServletResponse) response;


        if (isSessionInvalid(httpServletRequest)) {
              String timeoutUrl = httpServletRequest.getContextPath() + "/" + loginPage;
              httpServletResponse.sendRedirect(timeoutUrl);
              return;
        }

    }

    filterChain.doFilter(request, response);

}   

private boolean isSessionInvalid(HttpServletRequest httpServletRequest) {

    boolean sessionInValid = (httpServletRequest.getRequestedSessionId() != null)
            && !httpServletRequest.isRequestedSessionIdValid();

    return sessionInValid;

}

public void init(FilterConfig filterConfig) throws ServletException {
  System.out.println("Inicicando Sessão");
}

public void destroy() {
   System.out.println("Sessão destruida!");
}
/**
 * Utilizado para interceptar requisições para realizar um filtro de acesso a aplicação.
 *
 * @throws java.io.IOException
 * @throws javax.servlet.ServletException
 *
 * @param <b>request </b> ServletRequest
 * @param <b>response </b> ServletResponse
 * @param <b>chain </b> FilterChain
 */

}
[/code][/quote]

Faltou a configuração do Web.xml :lol:

Eu nao estou sabendo fazer a chamada no web config, onde chamar o:

br.com.inloc.sessao.AuthorizationListener

Meu XML está assim:

<session-config>
        <session-timeout>20</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>LoginPage.html</welcome-file>
    </welcome-file-list>
<filter>
 	  <filter-name>securityFilter</filter-name>
       <filter-class>myServlets.SecurityFilter</filter-class>
     </filter>
 	<filter-mapping>
       <filter-name>securityFilter</filter-name>
       <url-pattern>*.jsp</url-pattern>
     </filter-mapping>
 	<filter-mapping>
       <filter-name>securityFilter</filter-name>
       <url-pattern>*.faces</url-pattern>
    </filter-mapping>
    <filter-mapping>
       <filter-name>securityFilter</filter-name>
       <url-pattern>*.html</url-pattern>
    </filter-mapping>
    <filter-mapping>
       <filter-name>securityFilter</filter-name>
       <url-pattern>*.*</url-pattern>
    </filter-mapping>