Faltando uma semana para a conclusao do projeto,percebemos que a aplicacao desenvolvida para ser multiusuario eh na verdade monousuario!! :shock:
Explica-se:Trata-se de uma aplicacao estatistica,que lida com uma quantidade consideravel de dados numéricos(arrays pra ser mais exato).
Simulamos(depois de 1 ano e meio… :shock: ) dois usuarios ao mesmo tempo e pra nossa surpresa,esses dados eram compartilhados entre os dois,gerando resultados absurdos!!!
Obs:A app funciona perfeitamente com um único usuário…(pelo menos isso!!)
Pergunta:Qual a besteira q nós fizemos??
Obs2:Nao fui mais específico,pois não tenho noção de que dados vcs precisariam pra me dar uma resposta,por isso sintam-se livres para perguntar qq coisa.
Está usando uma variável de instância, ou uma variável static no servlet que possa estar causando esse comportamento?? Lembre-se que o container não instância toda hora um servlet novo. Normalmente ele reutiliza um já existente, então se existir variáveis de intância ou de classe terá problemas…
Cara pelo o que eu entendi, tente quebrar por funcionalidades(telas), quando um usuario (x) estiver utilizando uma tela o outro fica apenas como readonly(somente leitura)… por exemplo… :idea:
a) Variáveis estáticas são compartilhadas entre as instâncias da classe
b) http://www.jguru.com/faq/view.jsp?EID=150 diz que as variáveis de instância são reaproveitadas.
c) Ou seja, dependendo de como você está processando as coisas, é necessário “pendurar” os dados em variáveis de sessão.
[quote=robson.java]
Cara pelo o que eu entendi, tente quebrar por funcionalidades(telas), quando um usuario (x) estiver utilizando uma tela o outro fica apenas como readonly(somente leitura)… [/quote]
Não dá pra fazer isso (habilitar um e desabilitar outro) usando JSP de uma forma decente (que funcione direito). Normalmente você acaba bloqueando a si próprio.
Ponha os seus arrays na sessão do usuário, e está resolvido.
Fala galera,obrigado pela ajuda…
Vcs ja me abriram os olhos para algumas coisas…
1)Eu tenho login na minha app,mas nao crio sessao para cada usuario logado!
2)Meu servlet principal(o controlador)tem uma variavel de classe,que eh justamente a dist estatistica que usamos em todos os calculos!!!