Tomcat e Properties

Pessoal preciso de uma ajuda:

Eu tenho um servlet que instancia classes de um pacote que eu criei (arquivo JAR). Esse pacote Lê um arquivo .properties que fica no CLASSPATH. Quando eu executo o servlet, não sei o que acontece, mas o servlet não me traz resultado algum, nem exceptions. Eu preciso colocar o arquivo .properties em alguma pasta do tomcat ($CATALINA_HOME) ?? O que eu faço ??

Grato
:slight_smile:

Por que vc não coloca o preperties em algum lugar como WEB-INF/conf/seu.properties e depois usa o getRealPath de ServletContext para recuperar o arquivo?! Dentro de um servlet fica algo como:

String localProperties = this.getServletContext().getRealPath("WEB-INF/conf/seu.properties");

E daí usa o local para dar o load no properties.

Até.

Acontece que quem lê o .propertie é uma classe dentro de um JAR e não o Servlet

Hum, então eu acho que um ClassLoader possa lhe ajudar. Veja os metodos getResource e getResourceAsStream.

Até.

Se eu tenho uma aplicação normal, console ou swing/awt, funciona perfeitamente. Mas quando eu executo no Tomcat não funciona. O JAR está pronto e funcionando, quando não é usado via WEB/Tomcat

Como vc diz para a classe encontra o properties? E onde ele se localiza dentro do jar? No root do jar mesmo? Um ClassLoader encontra um resource qualquer baseado no local onde a classe está, mesmo que seja um .jar. Digamos que o properties esteja no mesmo diretorio que a classe que o carrega. Dentro dessa classe vc poderia fazer:

Class classe = this.getClass();
InputStream input = classe.getInputStream("seu.properties");
Properties prop = new Properties();
prop.load(input);

Nesse caso, como eu disse antes, basta colocar o properties no mesmo local da classe. Ele encontra mesmo que seja dentro do .jar

Até.

Cara você não entendeu, ou eu estou me expressando mal. O meu JAR consegue ler o .properties normalmente. O .properties fica em uma pasta qualquer e essa pasta esá no classpath. O problema é o seguinte, quando eu vou usar o JAR dentro de um servlet ele não me traz nenhuma informação.

Aham… agora entendi… dã…
Bom, se vc está com o arquivo no classpath do sistema, acho que um ResourceBundle seria o ideal para localizar o properties. Dá uma olhada nas docs.

Até.