Mesma sessao para duas janelas diferentes

Pessoa, estou colocando um objeto na sessão:

@SessionScoped
public class CarrinhoPedidoVenda {
	private List<CarrinhoItens> listaProdutos = new ArrayList<CarrinhoItens>();
	private List<CarrinhoItens> listaServicos = new ArrayList<CarrinhoItens>();
	private List<FncParcela> listaParcelas = new ArrayList<FncParcela>();
...

Crio um pedido de venda e salvo, inclusive os itens apenas no final. As listas ficam na sesão.
Fazendo os testes, abrir duas janelas com pedidos difrentes e salvei um deles. Minha surpresa é que a sessão era a mesma.
O problema é que matei os itens de um pedido e dupliquei os do outro.
Alguma sugestão para diferenciar as sessões?

–editado por faltar fechar “[/code]”

Se forem duas janelas do mesmo browser, não tem mto como… as requisições são feitas do mesmo jeito nas duas janelas, não dá mto pra diferenciar…

vc pode tentar achar algum jeito de, via javascript, descobrir um identificador da janela que vc tá usando, mas não conheço nada do tipo

Cinei, isso é o tipo de coisa que realmente acontece apenas em ambiente de testes. Em produção nenhum usuário vai fazer isso, de abrir duas janelas para fazer compras em seu site. E mesmo que ele abra duas janelas será o mesmo cliente, então não vejo um problema nisso.

Não há uma regra que diga isso, mas atualmente com os navegadores em abas eles mantém a mesma session para todos acessos ao site mesmo em abas diferentes, pois o cookie jsessionid é o mesmo para todos. Antigamente o IE tratava diferente isso, mas agora com o infame IE com abas creio que o tratamento deva ser da mesma forma que o Fifefox.

Abraços

O projeto é para uso corporativo e os usuários de compras estão habituados com sistemas desktop windows e com muti-janelas.
Ainda não sei se devo correr o risco ou não utilizar o recurso em sessões, ou tentar o que o Lucas sugere.
Obrigado mais uma vez pelas respostas

cinei, você tem que avaliar se isso é realmente um problema. Eu não vejo como uma pessoa pode fazer ações distintas com sessões distintas na mesma aplicação, mesmo site e tudo mais. Se às vezes é complicado operar o mouse em um eclipse só imagina em dois, hahahahah. Nesse caso se é o mesmo usuário na mesma aplicação, não vejo o porque de duas sessions diferentes.

Eu tenho um sistema coorporativo e o controle é muito restrito. Um exemplo: eu guardo o histórico dos URIs acessados. Caso o referer for diferente do último URI acessado já desconecto o cara, e por aí vai. É bem para evitar session-hijack e afins. Se precisar do código posso te passar, que na verdade é um interceptor do vraptor3, que há horas quero fazer uma receita de bolo com ele.

Abraços

[quote=cinei]Pessoa, estou colocando um objeto na sessão:

@SessionScoped
public class CarrinhoPedidoVenda {
	private List<CarrinhoItens> listaProdutos = new ArrayList<CarrinhoItens>();
	private List<CarrinhoItens> listaServicos = new ArrayList<CarrinhoItens>();
	private List<FncParcela> listaParcelas = new ArrayList<FncParcela>();
...

Crio um pedido de venda e salvo, inclusive os itens apenas no final. As listas ficam na sesão.
Fazendo os testes, abrir duas janelas com pedidos difrentes e salvei um deles. Minha surpresa é que a sessão era a mesma.
O problema é que matei os itens de um pedido e dupliquei os do outro.
Alguma sugestão para diferenciar as sessões?

[/quote]

Sessão não é janela. Se vc quer controlar as janelas terá que criar um esquema para isso. O normal é a pessoa usar quantas janelas quiser. A sessão será sempre a mesma.

Pessoal, gostei das respostas e sugestões. Agradeço.
Acabei mudando a forma e abandonando o uso de sesão para este processo. Mas ainda vou voltar a este assunto.
Passei a salvar o pedido ao enviar o primeiro item. Um pouco chato de implementar, mas ficou bom.
Garcia-jj, seria muita gentileza sua disponibilizar o código do interceptor e principalmente publicar no cookbook.