Singletons em JSP são instanciados novamente! HELP!
11 respostas
K
katamary
Fala galera. Tô com um problemão. Tenho um form que atualiza algumas variáveis em uma singleton. Como fazer para quando for executar o JSP usando Tomcat não ser instanciada novamente a singleton quando eu utilizar o método getInstance() ?
Aparentemente estão sendo geradas 2 singletons!
Qualquer alternativa que vocês me derem será de grande ajuda!
Sim! Meu singleton está de acordo com esse modelo. Eu executo o jForm e altero a singleton, mas mudanças não são refletidas no JSP. O JSP não consegue “enxergar” a singleton usada no jForm e acaba criando outra!!!
F
fvslistas
Sabe dzer se as duas instâncias estão dentro da mesma sessão?
Pode postar o código do singleton?
K
katamary
fvslistas:
Sabe dzer se as duas instâncias estão dentro da mesma sessão?
Pode postar o código do singleton?
Como vc identificou que existem duas instâncias da classe Estoque?
K
katamary
fvslistas:
Como vc identificou que existem duas instâncias da classe Estoque?
Eu identifiquei pelo fato de eu rodar primeiro um jForm que adicionava alguns objetos a uma LinkedList dessa singleton. Depois eu rodava o JSP no Tomcat e chamava um método da singleton para me retornar essa LinkedList. Mas a lista retornada continha apenas os valores antigos, criados com o contrutor. Portanto, existem 2 singletons!!!
F
fvslistas
Sinistro.
Vc pode mandar os códigos do jform que faz as adições e do jsp que faz as consultas?
K
katamary
fvslistas:
Sinistro.
Vc pode mandar os códigos do jform que faz as adições e do jsp que faz as consultas?
Creio que não será muito útil eu te mandar o código, pois eu acho que o problema é que o jform cria a singleton em algum lugar e o servidor cria em outro!
Tanto no JSP quanto no jForm eu uso: Estoque estoque = Estoque.getInstance();
Por enquanto, a única saída que eu pensei é: fazer todos formulários em JSP e esquecer do jForm do Swing…
F
fvslistas
Pô, então pelo q entendi vc tá usando dois fronts diferentes.
Um JSP e o outro swing. Um acesso via JEE e ou outro via desktop.
É isso? Se for tá explicado.
A solução para que você possa usar os dois e ter uma mesma instância para ambos é fazer com que a classe Estoque esteja dentro de uma única máquina virtual.
Assim, coloca o Estoque dentro do tomcat e crie um serviço que retorne a classe Estoque. Faça com que tanto o JSP quanto o swing acessem este serviço.