como matar a sessão em JSF?por favor, preciso dessa ressposta…nao adianta dar new nos objetos, tem que ser matar a sessão mesmo…
Não sei se é possível “matar” a sessão, mas, com alguma gambiarra, é possível obter a sessão chamando o ExternalContext do contexto do Faces.
Acredito eu (não rodei pra ver se funciona) que esse código limpe todo o conteúdo da sessão:
Iterator iter = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().entrySet().iterator();
while (iter.hasNext()) {
iter.remove();
}
Porém, não me responsabilize pelas conseqüências.
Você pode setar como nulo o managedBean no escopo de sessão (qualquer escopo na verdade) usando:
String expr = "#{" + nomeManagedBean+ "}";
ValueBinding vb = FacesContext.getCurrentInstance().getApplication().createValueBinding(expr);
vb.setValue(FacesContext.getCurrentInstance(), null);
Você pode criar um método que execute isso. Pode ser no próprio managedBean a ser anulado ou em outro managedBean.
Você pode matar a sessão da mesma forma que você faz trabalhando com JSP e Servlet puros, a única diferença é como você recupera a sessão:
((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getSession().invalidate();
isso aqui é o suficiente, é assim que faço o meu logout do sistema em jsf:
FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession)fc.getExternalContext().getSession(false);
session.invalidate();
flw Hewerton
funcionou, gente
obrigada mesmo!!
Pessoal, eu tenho um problema parecido com esse, acabei achando esse post e vi que talvez seja facil de conseguir resolver
Com esse post resolvi o meu problema de sessão, agora eu preciso resolver um problema de troca de Perfil, que seria o que, quando eu vou trocar de perfil do meu usuário, o que estava aparecendo na tela, continua aparecendo
Ex: Se eu estivesse vendo um cadastro X com o Perfil Y e trocasse para o Perfil Z, o cadastro X continua aparecendo, e o que eu queria é que para aparecer a minha tela inicial do sistema mesmo.
Para isso eu preciso que seja zeradas as minhas variaveis toda vez que eu troco de perfil.
Alguem sabe como que posso fazer isso, nao quero matar a sessão, senao tenho que logar novamente, so quero que eu possa trocar de perfil e zerar todas as variaveis de uma classe.
Obrigado
Mata a sessão e pede para o usuário logar novamente, dai vai carregar o novo perfil.