"Cannot locate configuration source" when using commons-configuration XMLConfiguration with Tomcat
I'm building two apps that uses commons-configuration XMLConfiguration. Since the apps are related, I've build another project, called commons, that has a custom configuration manager that initializes the XMLConfiguration like so:
config = new XMLConfiguration("conf/config.xml");
What happens is that the "command-line" app works fine, loading the configuration file. But when I try to use my custom configuration manager on a webapp (using Tomcat) I get a
org.apache.commons.configuration.ConfigurationException: Cannot locate configuration source
I've placed the conf directory on the WEB-INF folder, the root folder and the META-INF folder. I've also tried with "/conf/config.xml"
, "./conf/config.xml"
and开发者_如何学编程 "../conf/config.xml"
.
The only time I got this to work - on the web app - was using an absolute path.
What am I missing?
Thanks, Bruno
Use ServletContext.getResourceAsStream(..)
, and pass the stream. Or if the file is on the classpath, you can use getClass().getResourceAsStream(..)
Actually, org.apache.commons.configuration.XMLConfiguration
does not have a constructor which accepts an InputStream
, so getClass().getResourceAsStream()
will not work. There is an XMLConfiguration
constructor which takes a URL, however, so use getClass().getResource()
instead.
See http://commons.apache.org/configuration/apidocs/org/apache/commons/configuration/XMLConfiguration.html
精彩评论