Olá
estou tentando carregar um arquivo .properties (em um servlet) que está rodando no tomcat, mas está dando erro.
Fiz o mesmo método em uma aplicação standalone, deixando o arquivo .properties na raiz da aplicação e funcionou OK, agora no tomcat não está.
O Arquivo está dentro de WEB-INF/lib, mas recebo uma Exceção que o arquivo não foi encontrado.
o código está assim
Properties properties = new Properties();
File file = new File("system.properties");
try {
properties.load(new FileInputStream(file));
System.out.println(properties.getProperty("myConfig.userName"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
System.out.println("--- Erro Carregando Arquivo de Configuração ---");
e.printStackTrace();
}
Diferente de aplicações StandAlone onde é só colocar o arquivo properties na raiz do projeto e carregá-lo, em aplicações WEB, você deve informar onde está esse arquivo.
Primeiramente eu aconselho por arquivos de configuração desse tipo abaixo do WEB-INF/classes (questão de segurança).
Segundo, você deve usar o getServletContext().getRealPath() para capturar o path da sua aplicação, consequentemente você pode capturar o path do arquivo .properties e depois carregá-lo.
Qualquer coisa estamos ae
Ou senão tente isso:
[code]ServletContext myContext = session().getServletContext();
InputStream is = myContext.getResourceAsStream( “/WEB-INF/lib/meuArquivo.properties” );
Properties properties = new Properties();
try {
properties.load( is );
System.out.println(properties.getProperty(“myConfig.userName”));
} catch (IOException e) {
System.out.println("— Erro Carregando Arquivo de Configuração —");
e.printStackTrace();
}[/code]
Dica:
Adicione no seu arquivo web.xml um parametro no contexto da sua aplicação apontando para seu arquivo .properties, assim:
<context-param>
<param-name>gmconfigurator</param-name>
<param-value>/WEB-INF/lib/meuArquivo.properties</param-value>
</context-param>
Depois em sua aplicação você pega esse parametro como String e utilize em myContext.getResourceAsStream(String). Dessa forma você não precisa recompilar sua aplicação, caso você altere seu arquivo .properties de diretório, apenas reinicie sua aplicação.