ola a todos.
Estou usando @SessionScope e @Component na classe abaixo.
porem o atributo senha não fica na sessão.
o campo int m que é para teste, fica na sessão, pq inicio com 0 e depois quando autentica fica com 36, e ai no proximo request ele continua com 36.
porem se eu mudar o numero para 40 e reiniciar o tomcat ele mostra 36 e demora para mostrar 40.
outra duvida e quando o vraptor da o start na sessão?
package br.com.agile.sistema.negocio;
import java.io.Serializable;
import java.util.Date;
import br.com.agile.sistema.model.Senha;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;
@Component
@SessionScoped
public class Logado implements Serializable{
/**
*
*/
private static final long serialVersionUID = 6851281174307159289L;
private Senha senha;
private int m = 0;
public Date time;
public Logado(){
System.out.println("logado novo");
this.time = new Date();
}
public Senha getSenha() {
return senha;
}
public void setSenha(Senha senha) {
this.senha = senha;
}
public boolean isLogado(){
System.out.println(this.getM());
boolean _isLogado = false;
_isLogado = this.getSenha() != null;
_isLogado = (_isLogado) && (this.getSenha().getId() != null);
_isLogado = (_isLogado) && (this.getSenha().getId()>0);
this.setM(36);
System.out.println("----");
return _isLogado;
}
public int getM() {
return m;
}
public void setM(int m) {
this.m = m;
}
}
Primeira pergunta… quem cuida da HTTP Session? O vraptor ou o servidor web?
Servidor Web, ou seja, o vraptor não tem nada a ver com isso! rs
O vraptor não dá start na sessão ele usa a session do servidor web, ele sim dá o start na session, pq ele sabe identificar o usuário… ele que gerencia essas responsabilidades de sessão… o vraptor apenas utiliza as informações que está no container, que no seu caso é o tomcat!
quando vc anota o seu bean com o @SessionScoped, toda vez que vc precisar dele o vraptor pergunta pro container se a session! isNew() se sim ele te retorna um novo obj para aquele usuário, caso o contrário, ele te retorna o msm obj!
se vc quer que o tomcat não faça o redeploy da aplicação… limpa o cache dele… pausa o tomcat e dah um clean tomcat work directory…
ou tb cria um opção no seu controller pra deslogar o seu usuário da sessão!
Mas isso não tem nada a ver com o problema! Se vc alterou o objeto deveria ter mudado o valor! tem como vc postar como vc implementou?
talvez vc esteja chamando o isLogado() depois de setar esse novo valor! aí o valor volta a ser 36… não sei se vc percebeu… mas esse valor é setado com ele logado ou não!
opa td bem,
a noite eu posto.
agora uma coisa que percebi que pode ter influencia e que eu recebo o Logado por injeção e vou passando ele por parametros e lá dentro de outro metodo ele sofre alteração.
mas acho que não pq a referencia e a mesma.
em todo caso obrigado pela ajuda e noite eu posto mais detalhhado o codigo.
valeu
opa Kadu blza
eu fiz um teste de sessão aqui e realmente ele grava certinho.
eu consegui resumir meu bloco de codigo para aonde realmente da erro.
abaixo temos o objeto logado @Component e @SessionScope eu recebo da view o objeto senha a classe dele e anotada com @Resource,
adiciono a senha no logado e ai depois que chamo o forwardto o objeto senha some do logado.
valeu
@Path("/login/realizar/")
@NoInterceptLogado
public void realizar(Senha senha, Logado logado) throws Exception {
//o atributo senha tem que ficar na sessao
logado.setSenha(senha);
this.result.forwardTo(PrincipalController.class).inicio();
}
criando LogadoIntercept validador de login
realizar aqui recebe por injeção o objeto Logado
logado novo aqui ta certo primeira inserção do logado
antes 0
depois 1
segundo acesso
login contruido
Apresentando os Sessions da Sessao 6B60EE8961EDF0F11AF08319AD486840
nova sessao false
br.com.agile.sistema.negocio.Logado@12d391f8
criando LogadoIntercept validador de login
realizar aqui recebe por injeção o objeto Logado
logado novo erro nao deveria inserir novamente
antes 0 aqui deveria ser 1
depois 1 aqui deveria ser 2
[/color] percebe-se pelo httpsession que o Logado@12d391f8 é mesmo de todas requisições