Good idea. What I'm trying to get away from is that user's (sys admins) have
to edit the web.xml file. This is because I plan on distributing my
application as a WAR, and need to I have certain parameters that WILL need to
be changed for different systems (i.e. Unix vs. Windows). Also my web.xml is
already pretty huge, so digging through it to edit parameters might be tought.
And it'll get overwritten everytime a new version is distributed.
That is why I look it up in System.getProperty("user.home") and then /WEB-INF/.
Maybe a bad idea, but everytime I move my app to my OS X box, I have to change
the parameters in the config file. If I lookup user.home, then I alleviate
this problem. However, when the app is first installed, it won't be in
user.home, so I look in /WEB-INF/.
Thanks for your help,
Matt
--- "Emaho, Ghoot" <[EMAIL PROTECTED]> wrote:
> Matt
>
> As an aside you may want to consider how you retrieve the config xml file.
> Currently you are using the code
>
> InputStream is = new FileInputStream(Constants.USER_HOME + configFile)
>
> While this is fine, it may not always be portable, or as portable as other
> methods. For instance Chiki has a similar mechanism for loading the config
> xml file, but it is done using URL
>
> conf.setConfigFile(getServletContext().getResource(chikiConfigFile))
> ...and then....
> Document doc = builder.build(getConfigFile());
>
> This removes any hardcoding in your constants file to the path of the file,
> and is more portable across containers. 'chikiConfigFile' is a Servlet Init
> parameter, so the location can be changed at deploy time without changing
> code.
>
> As I said, your example does work. I just wanted to point out alternative
> method that may be more suitable. Check the Chiki code for full details.
>
> Cheers
>
> Ghoot
>
>
> > -----Original Message-----
> > From: Matt Raible [mailto:[EMAIL PROTECTED]]
> > Sent: 06 March 2002 22:13
> > To: Struts Users Mailing List
> > Subject: RE: "Best Practice" for parsing an XML file - Code Review
> > Requested
> >
> >
> > I've completed this task - however, it would've been MUCH
> > easier to just use a
> > properties file. Of course, it could just be my experience
> > with XML parsing -
> > because I had to write a lot of code to grab 4 simple varaibles.
> >
> > private synchronized void loadConfig() throws Exception {
> >
> > // Initialize our configuration object
> > config = new Configuration();
> >
> > logCat.debug("Looking for " + configFile + " in " +
> > Constants.USER_HOME);
> >
> > // Acquire an input stream to our configuration file
> > InputStream is = new
> > FileInputStream(Constants.USER_HOME + configFile);
> >
> > // No file found in user.home
> > if (is == null) {
> > logCat.debug("File not found at " + Constants.USER_HOME +
> > configFile
> > + " - looking in application's WEB-INF directory");
> >
> > // Look for config.xml in WEB-INF
> > is = getServletContext()
> > .getResourceAsStream("/WEB-INF/" + configFile);
> >
> > if (is == null) {
> > throw new Exception("Configuration file '"
> > + configFile + "' not found in '"
> > + Constants.USER_HOME + "', nor in
> > '/WEB-INF/'");
> > }
> > }
> >
> >
> > // Get the XML Document
> > DocumentBuilderFactory builderFactory =
> > DocumentBuilderFactory.newInstance();
> > DocumentBuilder builder =
> > builderFactory.newDocumentBuilder();
> > Document doc = builder.parse(is);
> >
> > // close the input stream
> > is.close();
> >
> > // get the repository root
> > NodeList rep = doc.getElementsByTagName("root");
> > Node node = rep.item(0);
> > Text rootDir = (Text) node.getFirstChild();
> > config.setRepositoryRootDir(rootDir.getNodeValue());
> >
> > // get the assets directory
> > rep = doc.getElementsByTagName("assets");
> > node = rep.item(0);
> > Text assetDir = (Text) node.getFirstChild();
> > config.setAssetDir(assetDir.getNodeValue());
> >
> > // get the assetView path
> > rep = doc.getElementsByTagName("viewPath");
> > node = rep.item(0);
> > Text viewPath = (Text) node.getFirstChild();
> > config.setAssetViewPath(viewPath.getNodeValue());
> >
> > // get the assetView path
> > rep = doc.getElementsByTagName("default-passing-score");
> > node = rep.item(0);
> > Text minScore = (Text) node.getFirstChild();
> > config.setAssessmentMinScore(new
> > Double(minScore.getNodeValue()).doubleValue());
> >
> > logCat.debug(config.toString());
> >
> > }
> >
> > --- Ronald Haring <[EMAIL PROTECTED]> wrote:
> > > > Nothing is wrong with the properties file...Xml is just better
> > > >
> > > > 1. one config.xml file in one central place...it's so much
> > > > easier to manage
> > > > then a whole bunch of properties
> > >
> > > You can put all your properties in one file as well, lets
> > call that file
> > > config.properties
> > >
> > > > 2. xml handle the structure data much better then properties file
> > >
> > > data structure might be nice for communications between
> > computers but for
> > > users?
> > > e.g.
> > > RepositoryRoot=d:\
> > > RepositoryAssets=assets
> > > RepositoryViewPath=file://d:/repository/assets
> > >
> > > seems just as clear to me as
> > > > > <respository>
> > > > > <root>d:/repository</root>
> > > > > <assets>assets</assets>
> > > > > <viewPath>file://d:/repository/assets</viewPath>
> > > > > </respository>
> > > etc.
> > >
> > > Cons of xml
> > > - Carefull with that ",<,> sign eugene,
> > > - Slow parsing
> > >
> > > Gr
> > > Ronald
> > >
> > >
> > > Furore B.V.
> > > Rijswijkstraat 175-8
> > > Postbus 9204
> > > 1006 AE Amsterdam
> > > tel. (020) 346 71 71
> > > fax. (020) 346 71 77
> > >
> > >
> > --------------------------------------------------------------
> > --------------
> > > ---------------
> > > The information transmitted is intended only for the person
> > > or entity to which it is addressed and may contain confidential
> > > and/or privileged material. Any review, retransmission,
> > > dissemination or other use of, or taking of any action in
> > > reliance upon, this information by persons or entities other
> > > than the intended recipient is prohibited. If you received
> > > this in error, please contact the sender and delete the material
> > > from any computer
> > >
> > --------------------------------------------------------------
> > --------------
> > > ---------------
> > >
> > >
> >
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Try FREE Yahoo! Mail - the world's greatest free email!
> > http://mail.yahoo.com/
> >
> > --
> > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> >
> >
>
> --
> To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
__________________________________________________
Do You Yahoo!?
Try FREE Yahoo! Mail - the world's greatest free email!
http://mail.yahoo.com/
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>