[Resolvido] Vraptor + GAE + Objetos na sessao

boa tarde galera… estou tentando enviar um objeto para sessao (usuario), no GAE (google app engine)

minha classe de sessao é

[code]
@Component
@SessionScoped
public class ClienteWeb implements Serializable {

private Usuario logado;

public void login(Usuario usuario) {
	this.logado = usuario;
}

public String getNome() {
	return logado.getNome();
}
public boolean isLogado() {
	return logado != null;
}
public void logout() {
	this.logado = null;
}

}[/code]

eu coloco essa classe no construtor do meu controller de usuario…

porem nao consigo visualizar o usuario nas jsps…

	@Post @Path("/login")
	public void login(Usuario usuario) {
		
		Usuario carregado = dao.autentica(usuario);
		if (carregado == null) {
			validator.add(new ValidationMessage("Login e/ou senha inválidos", "usuario.login"));
		}		
		validator.onErrorUsePageOf(ClientesController.class).main();
		
		clienteWeb.login(carregado);
		
		result.redirectTo(ClientesController.class).main();
	}

ele envia para o controller clientes… no metodo main… porem nessa jsp nao aparece o usuario e em nenhuma outra…
fazendo uns testes eu percebi que ele mostra o usuario apenas se eu fizer isso:

	@Post @Path("/login")
	public void login(Usuario usuario) {
		
		Usuario carregado = dao.autentica(usuario);
		if (carregado == null) {
			validator.add(new ValidationMessage("Login e/ou senha inválidos", "usuario.login"));
		}		
		validator.onErrorUsePageOf(ClientesController.class).main();
		
		clienteWeb.login(carregado);
		if (carregado != null) {
			validator.add(new ValidationMessage("Teste se funfa", "usuario.login"));
		}		
		validator.onErrorUsePageOf(ClientesController.class).index();
		
		result.redirectTo(ClientesController.class).main();
	}

fazendo o codigo no jeito acima… ele me mostra o usuario na jsp do index.jsp… porem só nessa tela…

será que alguem pode me ajudar com essa questao…

obrigado ae pessoal e boa tarde

como vc tá mostrando o usuário na jsp? e que container vc tá usando?

nas jsps estou usando o seguinte:

	<div id="usuario">
		<c:if test="${clienteWeb.logado}">
			Olá, ${clienteWeb.nome }! <a href="<c:url value="/logout"/>">Logout</a>
		</c:if>
		<c:if test="${empty clienteWeb or not clienteWeb.logado}">
			Você não está ddlogado. <a href="<c:url value="/login"/>">Login</a>
			<a href="<c:url value="/usuarios/novo"/>">Cadastre-se</a>
		</c:if>
	</div>

o container eh o app engine da google

pois bem., a classe ClienteWeb (que leva pra sessão) nao fica na sessao de jeito nenhum… só aparece no caso que eu citei acima…
quando eu faço um if seguido do validator direcionando pra jsp…

    if (carregado != null) {   
        validator.add(new ValidationMessage("Teste se funfa", "usuario.login"));   
    }         
    validator.onErrorUsePageOf(ClientesController.class).index();  

porem soh aparece a primeira vez… depois que mudo de jsp nao aparece… mais a sessao…

pico, guice ou spring?

spring

local ele também não aparece nada, ou só no GAE?

realmente lucas… esse teste eu nao havia feito…

localmente ele funfa certinho… aparece o usuario na sessao em todas as jsps implementadas…
apenas quando envio para o GAE… a sessao nao funciona… nem com reza brava… o que poderia ser?

para fazer alguns testes… já tentei usar a classa recebendo informacoes do big table (usuario, validando e populando a classe), ja fiz teste instanciando a classe na mao… (sem buscar no big table) e tbem nada… putz… nao tenho mais ideias… pra saber o que pode ser

se eu não me engano vc precisa de uma configuração adicional pra sessão funcionar no gae… por padrão a HttpSession é desabilitada se eu não me engano

entao lucas… eu habilitei o httpsession atraves do arquivo appengine-web.xml

se eu desabilito sessios-enable… ai sim me retorna erro pedindo para habilitar…
porem mesmo habilitado nao funciona a sessao

as instâncias de ClienteWeb estão vindo diferentes pro mesmo usuário?

ae lucas… valeu pela ajuda… consegui fazer funcionar, o problema era mesmo a minha impericia…

basta implementar a interface serializable em todas as classes relacionadas a classe de sessao.
tirar o construtor da classes de sessao recebento um HttpSession… e pronto… funcionou blz…