Estou com um problema básico e tentei algumas configurações e não consegui configurar.
O problema é o seguinte! Um classe Singleton é instanciada ao fazer o login no site. Para destruí-la estou enviando o valor nulo para o controle desta instância ao fazer Logout, mas e quando o cara não acessa o logou, qual a melhor forma de destruir esta instância? Há uma configuração no Tom Cat para resolver isto pra mim? Eu preciso trabalhar com Session?
Porque vc quer destruir um Singleton, um singleton nunca deveria ser destruído até que a aplicação seja encerrada.
O que vc está querendo fazer realmente se parece mais com ciclo de vida de objetos, no seu caso acredito que utilizar Session seja a melhor opção.
AGAraujo
E ai blz?
A idéia é que se a aplicação ficar mais de 5 minutos sem atividade o singleton seja destruido e somente recriado numa próxima chamada. É uma regra especifica do negócio, e acredito haver outras soluções, mas por enquanto está está sendo a melhor, exceto por este contratempo.
Talvez a session resolva este problema, mas agora me coloquei na posição de entender o porque do problema, entende?!
Será que poderiam então me explicar como funciona o “ciclo de vida” deste singleton no TomCat quando não crio session? Sincronizar seria também parte da solução?
Valeu e obg.
P.S. Se souberem de artigos que tratem disto tambem eu agradeço.
Se alguém tiver mais algumas sugestões adoraria conhecê-las.
Obg
fabiofalci
Uma sugestão é colocar no google “singletons are evil” e ler os links!
AGAraujo
Já estou fazendo isto!
Outras?!
Z111
seria possível implementar um timer dentro dele?
o timer seria zerado a cada acesso?
uma solução meio lusitana, mas …
AGAraujo
Opa Z blz??
Bom resolvi da seguinte forma…
criei uma fabrica de objetos e adicionei a propriedade “Date createdin”.
E ao chamar a minha classe singleton uma nova operação é realizada, a comparação de tempo atual e de inicio, fazendo com que uma nova instância seja criada se o tempo for maior que 10 minutos.