Session (Como finalizar ?) VRaptor 2 -> ERRO 500

3 respostas
Lavieri

Como finalizar uma sessão no VRaptor 2 ?

EDITADO.: O problema persiste, por favor vejam o post abaixo de Paulo Silveira… a sulção que tinha pensado não esta funcionando…

3 Respostas

Lavieri

EDITADO: Achei que a solução iria dar conta, mas infelismente não esta, por favor vejam o post abaixo do Paulo Silveira.

acredito que lembrie de uma solução...

@In
HttpSession session;

public void logout() {
    if (session != null)
        session.invalidate();
}
se tiver uma forma mais legal de fazer, por favor digam ^^
Paulo_Silveira

é isso mesmo lavieri, via o invalidate.

Lavieri
Paulo Silveira:
é isso mesmo lavieri, via o invalidate.

Opa paulo blz ?? achei que ia ser simples assim.... mas infelismente não esta sendo =/

recebo erro 500 e uma Exception esparramando na tela toda hora...

Achei que podia ser pq tinha outros @Outs que dependiam da Session, mas isolei totalmente a logica de logout e continua dando problema...

Pelo que percebi, no meio do VRaptor é checado se existem objetos na session: org.vraptor.scope.SessionContext.hasAttribute(SessionContext.java:53)
neste momento ele da algum getAttribute(), gerando uma IllegalStateException, que não foi esperada ou tratada, =/ gerando a exception.

Alguem com certeza já deve ter invalidado alguma Session no VRaptor, e deve ter uma solução para isto =/

e a solução não pode ser tão feia como: logout.jsp
<%
 	if (request.getSession(false) != null)
 		request.getSession().invalidate();
 	response.sendRedirect(".");
%>
tem que ter um modo de fazer isso de dentro da logica. meu properties esta assim: view.properties
login.out.ok = redirect:/
Minha lógica esta assim:
import javax.servlet.http.HttpSession;

import org.vraptor.annotations.Component;
import org.vraptor.annotations.In;

@Component("login")
public class AutenticarOutLogic {

	@In(required=false)
	HttpSession session;
	
	public void out() {
		if (session != null)
			session.invalidate();
	}
}

meu erro é esse

exception

javax.servlet.ServletException: java.lang.IllegalStateException: getAttribute: Session already invalidated
	org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:73)
	org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.IllegalStateException: getAttribute: Session already invalidated
	org.apache.catalina.session.StandardSession.getAttribute(StandardSession.java:1032)
	org.apache.catalina.session.StandardSessionFacade.getAttribute(StandardSessionFacade.java:110)
	org.vraptor.scope.SessionContext.hasAttribute(SessionContext.java:53)
	org.vraptor.scope.DefaultLogicRequest.findAttribute(DefaultLogicRequest.java:80)
	org.vraptor.introspector.WebBeanProvider.findAttribute(WebBeanProvider.java:14)
	org.vraptor.component.ComponentConstructor.newInstance(ComponentConstructor.java:37)
	org.vraptor.interceptor.InterceptorType.newInstance(InterceptorType.java:66)
	org.vraptor.interceptor.InterceptorDealer.poll(InterceptorDealer.java:62)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:58)
	org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:38)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:130)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:57)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:47)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:97)
	org.vraptor.core.DefaultController.execute(DefaultController.java:46)
	org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:44)
	org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
Criado 18 de setembro de 2009
Ultima resposta 20 de set. de 2009
Respostas 3
Participantes 2