Re: Loading properties file in .war under JBoss - where do they belong?
ddog wrote:
I'm trying to read a properties file within a web-app under JBoss. The
setup follows:
Location of properties file in war file is:
WEB-INF/classes
// code to load properties file is:
ResourceBundle props =
ResourceBundle.getBundle("idmwswrapper.properties",
Locale.getDefault(), this.getClass().getClassLoader());
ERROR READING PROPERTIES FILE.... Can't find bundle for base name
idmwswrapper.properties, locale en_US
2007-08-03 14:52:08,734 INFO [STDOUT]
java.util.MissingResourceException: Can't find bundle for base name
idmwswrapper.properties, locale en_US
Anyone have any ideas? I've tried other methods of reading the file,
but it cannot be 'found'. Doc say
props file must be in classpath. WEB-INF/classes is in the classpath.
I don't know about JBoss particularly, but generally there are two roads:
Use the ServletContext:
<http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContext.html#getResource(java.lang.String)>
<http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContext.html#getResourceAsStream(java.lang.String)>
ServletContext.getResourceAsStream( String path )
The path must begin with a "/" and is interpreted as relative to the current context root.
Typically you'd gather a resource from a resources subdirectory of the webapp
or of the WEB-INF/:
context.getResourceAsStream( "resources/my.properties" )
The other way is to use a ClassLoader, either directly or through the
corresponding Class methods:
<http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String)>
<http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html#getResourceAsStream(java.lang.String)>
These methods search the class path, not the web app context, so instead of
starting at, for example:
http://your.host:8080/webapp/
it starts looking at the application's WEB-INF/classes subdirectory and other
classpath locations.
For web apps the ServletContext version would probably work better.
--
Lew