.properties

Olá pessoal,

Uma dúvida… fiz uma aplicação/serviço que na teoria precisa rodar até determinado horario… a aplicação não tem interface gráfica pois como já disse é um serviço porem as vezes eu preciso para-la para atualizar, verificar algum problema ou sei lá o que… então a dúvida… tem como eu alterar uma propriedade e ao mandar busca-la do arquivo ele pegar a ultima versão?

Assim…

Iniciei minha aplicação e a propriedade horaFechamento = 22:00:00

As 15 eu descobri que preciso para-la para manutenção… queria mudar a propriedade horaFechamento = 15:20:00 e sem precisar mexer na aplicação ela entendesse que a hora de fechamento mudou…

Eu já tentei de tudo mais sempre que instancio a classe que traz as propriedades pra mim ela me traz a posição da primeira vez que eu instanciei… ;o/ ou isso não funciona ou estou fazendo algo errado (o mais provavel) alguma dica?

Vc pode criar um Thread para ficar verificando se o arquivo foi alterado e caso afirmativo carregar novamente os valores.

Voce pode utilizar o method lastModified() para verificar a ultima modificação.

http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html#lastModified()

Oi Leonardo,

Ai que tá… eu não leio o arquivo como um File e sim como um ResourceBundle… pois não tem só esta informação lá dentro… meu arquivo de propriedades possui varias ‘variaveis’ de configuração da minha aplicação… não queria criar outro arquivo só para buscar a hora de fechamento… queria sei lá forçar o ResourceBundle a pegar a ultima atualização…

Quanto a thread eu já faço isso… só que não tá funcinando pois como já disse ele sempre me tras a mesma posição do file.properties que estou usando.

Opa!

Já resolvi o problema…

public void reloadBundles() {
	try {
		Field field = ResourceBundle.getBundle("meuArquivoDePropriedades")
		.getClass().getSuperclass()
		.getDeclaredField("cacheList"); 

		field.setAccessible(true); 
		sun.misc.SoftCache cache = (sun.misc.SoftCache) field.get(null); 
		cache.clear(); 
		field.setAccessible(false); 
		resources = ResourceBundle.getBundle("meuArquivoDePropriedades");
	} catch (Exception e) {
		logger.debug("Ocorreu um erro durante a atualização das propriedades", e);
	}

}

Depois disso eu rodo o metodo que seta os dados pra mim e pronto ;õ)

Brigadinha!