Adicionar na Sessão de cada Usuário request.getSession();

Galera até onde eu sei a sessão é individual para cada Thread ( ou browser diferente ) correto ?
uso o servlet 2.5 api.

Quando em uma Servlet Simples adiciono a Sessão
HttpSession session = request.getSession();
session.setAttribute(“nome”, "FULANO);

E quando abro outro Browser e acesso uma Servlet
o valor FULANO está nela também…

Ou seja a sessão parece ser para todas as JANELAS.

E eu gostaria de ser setada para cada usuário logado …
não uma sessão GLOBAL

Alguém faz idéia ?

Abrs!

Faça o teste com IE e Chrome. O valor não será o mesmo.

Se você abrir abas do mesmo browser pode acontecer isso, a sessão ser compartilhada.

Obrigado Hebert ,

Mas infelizmente não funcionou , testei com IE e Firefox, ambos abrindo o browser novo, sem o uso de Abas.
Mas continua a sessão sendo compartilhada .

Estranho nas versão anteriores nunca tive esse problema

[quote=jhieiy]Obrigado Hebert ,

Mas infelizmente não funcionou , testei com IE e Firefox, ambos abrindo o browser novo, sem o uso de Abas.
Mas continua a sessão sendo compartilhada .

Estranho nas versão anteriores nunca tive esse problema

[/quote]Eu nunca tive esse problema.

Como você está fazendo isso? session.setAttribute(“nome”, "FULANO);

Estou fazendo o seguinte:

[code]
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
System.out.println( session.getAttribute(“user_id”) ); // Aqui na primeira vez vem null o que não está errado

id= request.getParameter(“id”)
User user = Dao.getUser(id);

session.setAttribute(“user_id”, user.getId()); // Está setando nesta sessão e para todos os outros[/code]

Se eu for acessar outro Browser com id diferente ,
o valor do System.out.println( session.getAttribute(“user_id”) ); (atribuido no primeiro )
é mostrado neste System também.

Não sei porque isto está sendo compartilhado.

Eu uso Tomcat, será alguma configuração nele ?

E qual valor vc está testando no primeiro teste e no segundo?

Qual os dados do usuário do ID do login?

o primeiro é 1;
o segundo é 2; (vem como parametro)

Eu Entendi a sua pergunta, mas não estão se repetindo. são entrada diferentes.

Por exemplo
Browser 1 : http://;…? id= 1
Browser 2 : http://;…? id= 2

Esse Dao.getUser(id)? o usuário não está estático não? Tomou cuidado com isso?

Hebert foi resolvido !
Deixa eu compartilhar aqui.

Utilizando só request.getSession()/request.getSession(true) pega a sessão e utiliza em Cookie ( por isso acontecia de ficar sendo visto para todos)

Utilizando o request.getSession(false); este é o que cria uma Sessão…

Só que colocando a URL no browser e acessando a Servlet

o request.getSEssion(false) é nulo. ele precisa ser vindo de uma página .jsp

entaõ o que eu fiz ?

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); if(session == null && !request.isRequestedSessionIdValid()){ request.getRequestDispatcher("/reload.jsp").forward(request, response); return; } ..... }

e no reload.jsp coloquei um simples javascript para forçar a navegação

<script>
	var url =  window.location; // pega a url do browser no caso a mesma que tentei acessar diretamente pelo endereço do navegador
	window.location.href = url; // refaz o request 
</script>

Agora sim na linha da Servlet acima criará a sessão para cada usuário

:smiley:
Agradeço a disposição de ajudar
[/code]