Refresh Automático dos Arquivos em Java – JSF

Sabe aqueles momentos no desenvolvimento que você altera determinada propriedade de um arquivo e essa alteração não é aplicada imediatamente na visualização da página? Isso frustra.

Normalmente quanto estamos programando em Java para Web algo comum de acontecer é alterarmos determinada propriedade de um arquivo e irmos no navegador e recarregar à página. Fazemos isso incontáveis vezes ao longo do dia.
Até aí nada demais, o problema acontece quando recarregamos a página e alteração não é aplicada, assim você fica imaginando se teve efeito positivo a alteração ou não.

Tá, e o que isso tem a ver com o refresh automático?

Por padrão, após o JSF receber uma requisição xhtml, ele faz o parsing e as validações das tags e compila o arquivo, cada tag para um estrutura em memória e, após isso faz o cache para que nas próximas requisições deste mesmo xhtml ele não tenha que fazer tudo novamente.

Desligando o cache

É possível definir o tempo de cache ou desligar esse cache durante o desenvolvimento.
Basta adicionar no arquivo web.xml

– Definir tempo para verificar se algum arquivo foi modificado

<context-param>
	<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
	<param-value>2</param-value>
</context-param>

– Desligar o cache por completo

<context-param>
	<param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
	<param-value>0</param-value>
</context-param>

O tempo da configuração javax.faces.FACELETS_REFRESH_PERIOD é tratada em segundos.

Habilitando o cache para o ambiente de produção

Project Stage

O JSF entende que cada projeto passa por estágios e cada um possui características específicas que ajudam de diferente modos.
Hoje no JSF são possíveis encontrar os seguintes estágios: Development , UnitTest , SystemTest , Production e Extension.

O estágio importante para nós aqui é o “Production” (que é o valor padrão).

Para habilitarmos o cache em produção basta definirmos o parâmetro de contexto javax.faces.PROJECT_STAGE como “Production” no arquivo web.xml

<context-param>
	<param-name>javax.faces.PROJECT_STAGE</param-name>
	<param-value>Production</param-value>
</context-param>

Caso você não defina o ambiente, o JSF usará “Production” por padrão.

DEIXE UMA RESPOSTA