How to load XML config file properly from WEB-INF? 2006-12-22 - By James Dekker
Back Hi,
If you've been following my previous posts, you'll notice that I had a problem of trying to load a properties file (stored under WEB-INF), until I edited my build script and made it place the log4j.properties file under WEB-INF/classes, and then used the following code to load in the properties file:
public class Log4jInitServlet extends HttpServlet { public void init() throws ServletException { Properties props = new Properties(); try { props.load(this.getClass().getClassLoader().getResourceAsStream("/log4j .properties")); } catch (IOException e) { e.printStackTrace(); } }
Although, this works for loading property files into my webapp's CLASSPATH, my new question (just for those who think that I am trying to post the same question twice, which I am not), is this:
I also have a servlet which uses init params to load & parse XML config files (which are located under: %TOMCAT_HOME%/mywebapp/WEB-INF/ )
My new question is:
How do I use the getResourceAsStream() method to load this particular XML file which is not located under WEB-INF/classes? Its located under just WEB-INF.
Also is there a way to convert this InputStream into a File?
Here's my original piece of code (which works when undeployWars="true", I am trying to get it to work when undeployWars="false"):
public class XmlConfigInitServlet extends HttpServlet { public void init() throws ServletException { // String prefix = getServletContext().getRealPath("/"); String file = getInitParameter("xml-config-file"); File xmlConfigFile = new File(prefix + file); if (!xmlConfigFile.exists()) { System.out.println("attributes-config.xml not found, " + xmlConfigFile.getAbsolutePath()); } try { // Configure Digester from XML ruleset AttributeBeanXmlConfigHelper.parse(xmlConfigFile); Logger.getLogger(this.getClass()).warn("Finished parsing the config file."); is.close(); } catch (Exception ex) { ex.printStackTrace(); } } }
What I thought I could do was something like this inside the try / catch:
InputStream is = getServletContext().getResourceAsStream("WEB-INF/attributes-config.xml");
// Configure Digester from XML ruleset AttributeBeanXmlConfigHelper.parse(xmlConfigFile);
Now, the problem is... I think that there will be definitely be a pathing issue for WEB-INF/attributes-config.xml when using getResourceAsStream() (I am guessing because of my attempts with the Log4jInitServlet postings). Also, how would one convert an InputStream to a File?
e.g
How to convert "is" and "xmlConfigFile"?
Cheers,
JD
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ------ To start a new topic, e-mail: users@(protected) To unsubscribe, e-mail: users-unsubscribe@(protected) For additional commands, e-mail: users-help@(protected)
|
|