Load properties file in a java servlet deployed in JBoss as a war

java, jboss, properties

Solution

To load that properties file in a portable manner, the best way would be to put it on the classpath of the web application (either in a JAR under `WEB-INF/lib/` or under `WEB-INF/classes/` or on the app server classpath if you want to be able to edit that file without repackaging your web application) and to use `Class#getResourceAsStream(String)`.

The following code gets an `InputStream` for a property file which resides in the same package as the servlet in which the code is executed:

InputStream inStream = Thread.currentThread().getContextClassLoader()
                 .getResourceAsStream("myfile.properties");

Then, `load(InputStream)` it into a `Properties` object (skipping Exception handling):

Properties props = new Properties();
props.load(inStream);

Problem

I have a servlet deployed as a war in JBoss 4.0.2. I have a properties file for the deployed application. Where should I put this file? Under the conf directory in the jboss server\default\conf folder? How do I load that properties file in a portable manner?

Original source