Erro carregando arquivo .properties no Tomcat

2 respostas
M

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();
        }

2 Respostas

Jair_Rillo_Junior

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

Luiz_Henrique_Coura

Ou senão tente isso:

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(); 
}

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.

Criado 5 de novembro de 2004
Ultima resposta 5 de nov. de 2004
Respostas 2
Participantes 3