Olá,
Estou com uma dúvida sobre qual escopo devo declarar meu managed bean.
No meu sistema existe um monte de comboBox, e esses combobox se repetem em várias páginas, Por essa razão criei um managed bean só para me retornar as lista de SelectItem de cada combo, como mostra o código abaixo:
Ex.:
[code]
@Controller(“itensBean”)
@Scope(“application||session||request”)
public class ItemCombosBean {
private List<SelectItem> itensGestora;
private List<SelectItem> itensOrcamentaria;
private List<SelectItem> itensPrograma;
private List<SelectItem> itensPrograma2;
private List<SelectItem> itensPlano;
private List<SelectItem> itensCategoria;
private List<SelectItem> itensGrupo;
private List<SelectItem> itensModalidade;
private List<SelectItem> itensDespesa;
private List<SelectItem> itensFonte;
public List<SelectItem> getUnidadesGestora(){
if(itensGestora == null){
List<UnidadeGestora> unidades = CarregueDoBDTodasAsUnidadesGestoras();
for(UnidadeGestora opc : unidades){
itensGestora.add(new SelectItem(opc.getId(),opc.getLabel()));
}
}
return itensGestora;
}
…[/code]
Meus receios pra cada escopo são:
- Application -> As listas possuem muito itens, e eu terei que manter muitos objetos na mémoria;
- Session -> Multiplicar objetos que estariam na memoria no escopo de aplicação com o numero de usuários logado => DETONANDO A ESCALABILIDADE DO SISTEMA.
- Request -> fazer várias consultas no banco para carregar os itens do combobox, a cada vez que um combobox for exibido na tela.
Atualmente estou usando o escopo de aplicacao, no entanto não se seria melhor usar o escopo de request, mesmo efetuando várias consultas não valeria mais a pena do que manter tantos objetos na memoria do servidor.
E ae? Qual escopo devo utilizar?