Estou com uma dificuldade aqui, que penso não ser muito complexa, eis o cenário:
Tenho um p:tabView, com p:tab’s dinâmicas, criadas a partir de uma coleção no bean, tudo funcionando “perfeitamente”. Minhas abas são closable, ou seja, tem o botão de fechar a aba.
Tenho um listener no evento tabClose da tabView, que remove a aba da coleção, tudo ok.
No entanto, quando eu chamo o módulo novamente, ele volta na mesma condição que tinha antes de ser fechado, ou seja, sua bean não foi destruida e coletada pelo garbage collector.
Como faço pra “matar” essa bean? São todas @ViewScoped…
Isso acontece justamento por conta do @ViewScoped, aconselho da uma olhada sobre esse escopo, mais basicamente seu bean só sera destruido quando você sair da página.
Já li várias vezes sobre, e a princípio, entendo seus funcionamentos. Ao meu ver, sendo eu iniciante nesta tecnologia, ViewScoped me pareceu o mais viável para esta situação, qual seria então mais indicada?
Das duas uma ou você altera o escopo do seu mb para request ou o que eu acho menos indicado dá um new nos objetos assim ele destroi o estado anterior. Entretanto tudo isso dependerá do que você pretende fazer.
[quote=kleberdamasco]Como assim vc entra no modulo novamente?
vc saiu da página e vou a entrar nela?[/quote]
Trabalho com abas em um p:tabView, quando fecho uma aba, gostaria que a bean fosse liberada da memória, “entrar no módulo novamente” = adicionar a p:tab da view em questão novamente…
Com isso eu resolveria o problema da view voltar ao estado que tinha anteriormente, mas o que quero evitar é o fato dessa bean estar ocupando memória do meu servidor, sendo que já não será mais (até segunda ordem) utilizada pelo meu usuário…
[quote]
Trabalho com abas em um p:tabView, quando fecho uma aba, gostaria que a bean fosse liberada da memória, “entrar no módulo novamente” = adicionar a p:tab da view em questão novamente…[/quote]
para tentar eu disse tentar liberar a memoria vc teria que anular o objeto e torce para que o GC esteja afim de trabalhar, e para criar novamente e limpar seus atributos você será obrigado a instanciá-lo novamente.
Como você está trabalhando com o viewScoped esse é o precedimento padrão a ser adotado.
[quote=srmachado][quote]
Já li várias vezes sobre, e a princípio, entendo seus funcionamentos. Ao meu ver, sendo eu iniciante nesta tecnologia, ViewScoped me pareceu o mais viável para esta situação, qual seria então mais indicada?
[/quote]