Struts - Application Scope Variable

3 respostas
Talles_Santana

Boa noite,

estou desenvolvendo uma aplicação utilizando struts na qual o menu exibe uma lista proveniente do banco de dados.

O problema é: a lista não muda, vem de uma tabela que só se realiza consultas.

A solução para seria: a) configurar para que na inicialização do servidor(tomcat 6.0 neste caso)

algum trecho de código seja chamado. b) O referido trecho de código ter visibilidade do escopo da aplicação para executar algo como

application.setAttribute(listaXX”, dao.getListaXX())

Ainda encontrei nenhuma forma de fazer isso, porém acredito que isso seja possível( configuração no web.xml talvez).

Alguém sabe como fazer isso ou uma forma de resolver o problema?

Grato desde já,
Talles santana

3 Respostas

GabrielCardelli

Deixa eu ver se entendi sua duvida.

Você tem um MENU no banco esse menu não muda e quando você inicializa o Servidor você quer por isso em uma variavel para não fazer as chamadas no banco novamente?

Se for isso, você pode utilizar o ContextListener para setar as variáveis
http://www.java2s.com/Tutorial/Java/0400__Servlet/ServletContextListener.htm

abraço.

gomesrod

Essa solução funciona, mas possui uma desvantagem que é tornar mais pesada a inicialização do servidor. Seria mais interessante fazer um lazy loading, ou seja, carregar os dados apenas quando for usar pela primeira vez.

Ou para ser mais chique ainda use um serviço de cache, como este aqui:
http://www.objectzilla.com.br/2009/05/02/ja-usou-memcached/

Talles_Santana

Não tem problema tornar pesada a inicialização do servidor. É uma lista de 25 itens, uma consulta simples nada d+
Alguém achou algum material bom falando sobre inserir variáveis de escopo de aplicação(preferencialmente via código)?
Assim eu poderia criar um servlet e que seria carregado ao iniciar o servidor 1… e ele buscaria a lista e colocaria no
escopo de aplicação.

Ah, Gabriel, valeu pela ajuda já está funcionando. Agora gostaria de refinar a solução se é que essa já não é boa o suficiente =)

Criado 12 de junho de 2011
Ultima resposta 13 de jun. de 2011
Respostas 3
Participantes 3