Problemas tela de login de seção JSF - majorra + hibernate

Boa Tarde Pessoal, eu estou com problema com minha tela de controle de seção de login…

Alguem pode me ajudar?
na hora que eu digito o usuario e senha e aperto enter ocorre o seguinte erro:

beforePhase Dez 05, 2011 1:45:48 PM org.apache.catalina.core.StandardWrapperValve invoke Grave: Servlet.service() for servlet [Faces Servlet] in context with path [/TesteTomCat] threw exception [viewId:/html/pages/login.xhtml - A exibição de /html/pages/login.xhtml não pôde ser restaurada.] with root cause javax.faces.application.ViewExpiredException: viewId:/html/pages/login.xhtml - A exibição de /html/pages/login.xhtml não pôde ser restaurada. at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:205) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

Alguem sabe o que pode ser?

Segue as informacoes:

WebXml

<lifecycle>
	<phase-listener>br.com.dsc.controller.Autorizador</phase-listener>
</lifecycle>

Autorizador :

package br.com.dsc.controller;

import javax.el.ELResolver;
import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;


public class Autorizador implements PhaseListener {

	private static final long serialVersionUID = 1L;
	
	private static final String loginPage = "/html/pages/login.xhtm";
	
	public void afterPhase(PhaseEvent event) { 
	    FacesContext fc = event.getFacesContext();

	    if (fc.getViewRoot().getViewId().equals(loginPage)) { 
	    	return;
	    }

	    ELResolver elr = fc.getApplication().getELResolver();
	    LoginController login = (LoginController)elr.getValue(fc.getELContext(), null, "autenticador");

	    if ((login == null || !login.isLogado()) ) {
	    	//logger.info("Funcionário não está logado!");
	    	
	    	NavigationHandler nav = fc.getApplication().getNavigationHandler();
	    	nav.handleNavigation(fc, null, "login");
	    	
	    	fc.renderResponse();
	    }
	}
	
	public void beforePhase(PhaseEvent event) {
		System.err.println("beforePhase");
	}
	
	public PhaseId getPhaseId() {
		return PhaseId.RESTORE_VIEW;
	}
}

loginController

package br.com.dsc.controller;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;

import br.com.dsc.entity.Usuarios;
import br.com.dsc.controller.UsuariosController;

@Controller
@Qualifier("loginController")
public class LoginController {

	@Autowired
	private UsuariosController controller;

	private final Log logger = LogFactory.getLog(getClass());
	
	private String login;
	private String senha;
	private boolean logado = false;
	

	/**
	 * @return logado
	 */
	public boolean isLogado(){
		return logado;
	}
	
	/**
	 * @param logado boolean
	 */
	public void setLogado(boolean logado) {
		this.logado = logado;
	}
	
	/**
	 * @return login
	 */
	public String getLogin() {
		return login;
	}
	
	/**
	 * @param login String
	 */
	public void setLogin(String login) {
		logger.info("Mudando o login para: " + login);
		this.login = login;
	}

	/**
	 * @return senha
	 */
	public String getSenha() {
		return senha;
	}

	/**
	 * @param senha String
	 */
	public void setSenha(String senha) {
		this.senha = senha;
	}
	
	/**
	 * Efetua o login do usuário.
	 * @return "sucesso" || "erro" - String
	 */
	public String logar() {
		
		final Usuarios usuarios = controller.pesquisar(login);
		
		if (("admin".equals(this.login) && "admin".equals(this.senha))||
				(usuarios.getEmail().equals(this.login) && usuarios.getSecoes().equals(this.senha))) { 
			logger.info("Usuario logado com sucesso!!! ");
			this.logado = true;
			return "sucesso";
		} else {
			logger.info("Não foi possível autenticar o Usuario!!!");
			this.logado = false;
			return "erro";
		}
	}
	
	/**
	 * Efetua o logoff do usuário.
	 * @return "sucesso"
	 */
	public String deslogar() {		
		if (this.logado) { 
			logger.info("Funcionário deslogado com sucesso!!! ");
			this.logado = false;
		}
		return "sucesso";
	}


}

usuariosController

[code]package br.com.dsc.controller;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;

import br.com.dsc.entity.Usuarios;
import br.com.dsc.service.IUsuarioService;

@Controller
@Qualifier(“usuariosController”)
public class UsuariosController {

private final Log logger = LogFactory.getLog(getClass());

@Autowired
private IUsuarioService iUsuarioService;


// Variaveis de controle
private List<Usuarios> listaUsuarios;
private Usuarios selectedUsuarios;
private boolean editMode;

public UsuariosController(){
	selectedUsuarios = new Usuarios();
}

/* ==================Funcionalidades ================================== */

private Usuarios copiarDadosTela(final boolean zerarDadosTela) {

	final Usuarios usuario = new Usuarios();
	usuario.setId(getSelectedUsuarios().getId());
	usuario.setNome(getSelectedUsuarios().getNome());
	usuario.setEmail(getSelectedUsuarios().getEmail());
	usuario.setSenha(getSelectedUsuarios().getSenha());
	usuario.setDataNasc(getSelectedUsuarios().getDataNasc());
	usuario.setEmpresa(getSelectedUsuarios().getEmpresa());
	usuario.setCargo(getSelectedUsuarios().getCargo());
	usuario.setCidade(getSelectedUsuarios().getCidade());
	usuario.setEstado(getSelectedUsuarios().getEstado());

	if (zerarDadosTela) {
		this.zerarController();
	}
	return usuario;
}


public void excluir() {
	logger.info("Controller excluir.");
	final Usuarios usuario = this.copiarDadosTela(true);
	this.iUsuarioService.excluir(usuario);
	//this.listaUsuarios = this.iUsuarioService.getUsuarios();

	FacesContext.getCurrentInstance().addMessage(
			null,
			new FacesMessage(FacesMessage.SEVERITY_INFO, "DSC",
					"Usuario excluido"));
}

public void inserir() {
	logger.info("Controller inserir.");
	final Usuarios usuario = this.copiarDadosTela(true);
	this.iUsuarioService.incluir(usuario);
	//this.listaUsuarios = this.iUsuarioService.getUsuarios();
}

public void atualizar() {
	logger.info("Controller atualizar.");
	final Usuarios usuario = this.copiarDadosTela(true);

	//this.listaUsuarios = this.iUsuarioService.getUsuarios();

	FacesContext.getCurrentInstance().addMessage(
			null,
			new FacesMessage(FacesMessage.SEVERITY_INFO, "DSC",
					"Usuario Alterado"));
	this.iUsuarioService.atualizar(usuario);
}

public void controla_metodo() {
	if (this.editMode) {
		atualizar();
	} else {
		inserir();
	}

}

public Usuarios pesquisar(String email) {
	logger.info("Controller atualizar.");
	final Usuarios usuarios = this.iUsuarioService.pesquisarUsuarioPorEmail(email);
	return usuarios;
}

public void zerarController() {

	this.setSelectedUsuarios(new Usuarios());
}

/* =====================Gets e Sets===================================== */

public List<Usuarios> getListaUsuarios() {
	return listaUsuarios;
}

public void setListaUsuarios(List<Usuarios> listaUsuarios) {
	this.listaUsuarios = listaUsuarios;
}

public boolean isEditMode() {
	return editMode;
}

public void setEditMode(boolean editMode) {
	this.editMode = editMode;
}

public Usuarios getSelectedUsuarios() {
	if (!this.editMode) {
		zerarController();
	}
	selectedUsuarios = this.iUsuarioService.pesquisarPorId(1);

	return selectedUsuarios;
}

public void setSelectedUsuarios(Usuarios selectedUsuarios) {
	this.selectedUsuarios = selectedUsuarios;
}

}[/code]

Fecha essa página, abre outra e faça o teste.

Estranho.

Eu fiz isso e nao ocorreu nenhum erro. Contudo, não foi para outra tela.

Pelo que tava vendo nao passou nem pelo metodo logar().

Eu coloquei um breack point na primeira linha desse metodo e rodei em debug …

Apenas limpou a tela de login e no console apareceu a mensagem “beforePhase”

Voce sabe pq nao passou pelo metodO?

segue minha tela de login (login.xhtml)

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.prime.com.tr/ui">

<f:view contentType="text/html">

	<h:head>
		<f:facet name="first">
			<meta http-equiv="X-UA-Compatible" content="EmulateIE8" />
			<meta content='text/html; charset=UTF-8' http-equiv="Content-Type" />
		</f:facet>

		<title>Bem vindo ao Gera DOC.Com</title>
		<link rel="shortcut icon" href="favicon.ico"
			type="image/vnd.microsoft.icon" />
		<link rel="icon" href="favicon.ico" type="image/x-icon" />

		<link type="text/css" rel="stylesheet"
			href="#{request.contextPath}/resources/css/style.css" />
		<style>
.header {
	background-color: #230286;
}

.tabela01 {
	color: #FFFFFF;
	font-family: Arial;
	font-size: 11px;
	font-weight: bold;
	text-align: left;
}

a:link {
	color: #FFFFFF;
	text-decoration: none;
}

a:hover {
	color: #FFFFFF;
	text-decoration: underline;
}

a:visited {
	color: #FFFFFF;
	text-decoration: none;
}
</style>

		<ui:insert name="head"></ui:insert>
	</h:head>

	<h:body style="margin: 0 0 0 0;">
							<h:form>
		<table border="0" cellpadding="0" cellspacing="0" width="100%">
			<tr bgcolor="#230286">
				<td>&nbsp;</td>
				<td>&nbsp;</td>
				<td align="right"><h:panelGrid border="0" cellpadding="0"
						styleClass="tabela01" cellspacing="0" columns="3" align="right">
						<h:column>

								<h:panelGrid columns="3">
									<h:column>
										<h:outputText value="E-mail" />
									</h:column>
									<h:column>
										<h:outputText value="Senha" />
									</h:column>
									<h:column>&nbsp;</h:column>
									<h:column>
										<p:inputText style="font-size: 11px" value="#{autenticador.login}" />
									</h:column>
									<h:column>
										<p:password style="font-size: 11px" value="#{autenticador.senha}" feedback="false" />
									</h:column>
									<h:column>
										<p:commandButton id="btn" value="Entrar" style="font-size: 10px" action="#{autenticador.logar}"
											ajax="false" />
									</h:column>
									<h:column>
										<h:selectBooleanCheckbox />
										<h:outputText value="Mantenha-me conectado" />
									</h:column>
									<h:column>
										<p:commandLink value="Esqueceu a senha?" />
									</h:column>
									<h:column>&nbsp;</h:column>
								</h:panelGrid>

						</h:column>
					</h:panelGrid></td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td>&nbsp;</td>
				<td align="right"><h:panelGrid border="0" cellpadding="0"
						cellspacing="0" columns="2">
						<h:column>
							<h:form>
								<h:panelGrid columns="3" border="0">
									<h:column>
										<h:outputText value="Não é Cadastrado?" />
									</h:column>
									<h:column />
									<h:column />

									<h:column>
										<h:outputText value="Cadastre-se" />
									</h:column>
									<h:column>
										<h:outputText value="É gratuito!" />
									</h:column>
									<h:column />

									<h:column>
										<h:outputText value="Nome" />
									</h:column>
									<h:column>
										<p:inputText style="font-size: 11px" />
									</h:column>
									<h:column />

									<h:column>
										<h:outputText value="Seu E-mail" />
									</h:column>
									<h:column>
										<p:inputText style="font-size: 11px" />
									</h:column>
									<h:column />

									<h:column>
										<h:outputText value="Insira o E-mail novamente" />
									</h:column>

									<h:column>
										<p:inputText style="font-size: 11px" />
									</h:column>
									<h:column />

									<h:column>
										<h:outputText value="Senha" />
									</h:column>
									<h:column>
										<p:inputText style="font-size: 11px" />
									</h:column>
									<h:column />

									<h:column>
										<h:outputText value="Data de Nascimento" />
									</h:column>
									<h:column>
										<p:inputText style="font-size: 11px" />
									</h:column>
									<h:column />
								</h:panelGrid>
							</h:form>
						</h:column>
					</h:panelGrid></td>
			</tr>
			<tr>
				<td>&nbsp;</td>
				<td>&nbsp;</td>
				<td>&nbsp;</td>
			</tr>
		</table>
	</h:form>
	</h:body>
</f:view>
</html>

Oq eu sei é que quando você está em uma tela, e faz o reboot do seu servidor (após alterar um código, por exemplo) esse erro vai acontecer.

Pois toda a informação da tela que estava salva para o JSF, morreu ao realizar o restart do servidor.