users
[Top] [All Lists]

RE: [cinjug-users] properties file in WAR

To: "James Carman" <james@xxxxxxxxxxxxxxxxxxxx>, "Maoshi GU" <maoshi@xxxxxxxxx>
Subject: RE: [cinjug-users] properties file in WAR
From: "Herbers, Joe" <joe.herbers@xxxxxxx>
Date: Thu, 26 Jun 2003 11:54:00 -0400
Cc: <users@xxxxxxxxxx>
Delivered-to: mailing list users@cinjug.org
Mailing-list: contact users-help@cinjug.org; run by ezmlm
Thread-index: AcM76KrC720cnafaEdeOuQCgyZkotgAEA3BQ
Thread-topic: [cinjug-users] properties file in WAR
Ok, perhaps my final email on this (sorry for those of you who don't care about WAR files and such).  I did some more testing.  I had been using JBoss/Jetty before, with an exploded WAR dir.  I switched to Tomcat and found that it wouldn't pick up the properties file in the WAR root (which is what James would have expected)  So I put it in WEB-INF/classes, created a WAR file and that worked on Tomcat.  So then I took that same WAR file back to JBoss, and now it works (but WEB-INF/lib does seem to).  I don't know what was different from yesterday other than I am now using a WAR file instead of an exploded WAR dir.  Maybe I wasn't clearing things thoroughly enough between tests or something...yeah, an exploded WAR seems to work with WEB-INF/classes today, so I guess I'm good to go.
 
Thanks to y'all for your help, I really appreciate it.
 
 
-----Original Message-----
From: James Carman [mailto:james@xxxxxxxxxxxxxxxxxxxx]
Sent: Thursday, June 26, 2003 9:40 AM
To: Maoshi GU; Herbers, Joe
Cc: users@xxxxxxxxxx
Subject: Re: [cinjug-users] properties file in WAR

Yes, the ResourceBundle class CAN use an absolute path, but it is not in this case (at least by the code shown it isn't).  Here's a WAR file you can deploy in your environment.  If it doesn't work, then you've got something wrong, as it works in the reference implementation (Tomcat 4.1.24).  Basically, I have one index.jsp file that just loads up a ResourceBundle to find one string called "name" with the value "James Carman."  It merely prints "Hello, James Carman!" when it works properly.  The properties file (MessageResources.properties) is located in WEB-INF/classes and the ResourceBundle class picks it up just fine.  If you try moving the MessageResources.properties file to the document root, it fails! 
----- Original Message -----
From: Maoshi GU
Sent: Thursday, June 26, 2003 8:35 AM
Subject: Re: [cinjug-users] properties file in WAR

ResourceBundle can use an absolute path, e.g, /usr/local, where you can put your property files. If no defined, it uses where your class file lives. In your case, I believe it gets the file from your jsp file directory, which may be the doc root.

James Carman <james@xxxxxxxxxxxxxxxxxxxx> wrote:
Ok, first of all you should NOT do this in JSP code. If you really want
this sort of support, either use Struts or JSTL. Anyway, it looks like it
SHOULD be placed in the WEB-INF/classes directory based upon this code. The
ResourceBundle class will use the ClassLoader.getResource() approach. I'd
have to see your war file setup to figure out why it's not working.


----- Original Message -----
From: "Herbers, Joe"
To: "James Carman"
Sent: Wednesday, June 25, 2003 4:35 PM
Subject: RE: [cinjug-users] properties file in WAR


Well, this JSP code calls the static method ResourceBundle.getBundle Here's
the code (which I didn't write). Thanks for the help.

userLang = request.getParameter ("txtLanguage");
userCountry = request.getParameter ("txtCountry");
if (userLang != null && userCountry != null)
{
userLocale = new Locale (userLang, userCountry);
}
//default locale is US
else
{
userLocale=Locale.US;
}
session.putValue("myLocale",userLocale);
bundle = ResourceBundle.getBundle("Message",userLocale);
for (Enumeration e = bundle.getKeys();e.hasMoreElements();) {
String key = (String)e.nextElement();
String s = bundle.getString(key);
session.putValue(key,s);
}
String REQATTR_LOGINERROR =
(String)session.getValue("launch.loginerror");


-----Original Message-----
From: James Carman [mailto:james@xxxxxxxxxxxxxxxxxxxx]
Sent: Wednesday, June 25, 2003 4:20 PM
To: Herbers, Joe; Timothy Dennison; CinJUG (E-mail)
Subject: Re: [cinjug-users] properties file in WAR

Well, it depends on how you're loading the file. Are you using the
ServletContext.getResource() or ClassLoader.getResource() method? If you
use the ServletContext.getResource() method, the searching is done rooted at
the root of your webapp. But, if you use the classloader, it will be rooted
at WEB-INF/classes (or the root of one of your jars in WEB-INF/lib).

----- Original Message -----
From: "Herbers, Joe"
To: "James Carman" ; "Timothy Dennison"
; "CinJUG (E-mail)"
Sent: Wednesday, June 25, 2003 3:23 PM
Subject: RE: [cinjug-users] properties file in WAR


Sorry I'm slow following up to these helpful responses to my question. I
just got around to testing this out. It only worked when I put the file
(messages.properties) in the WAR's root dir. It couldn't locate it if I put
it in WEB-INF/classes or WEB-INF/lib. This was using an exploded WAR in
JBoss' deploy dir.

So I can just put it in the root when I make a WAR file. But I'm curious
how this is supposed to work. James mentioned reading the docs - any
recommendations for docs on how WAR files can be put together?

Thanks, Joe


-----Original Message-----
From: James Carman [mailto:james@xxxxxxxxxxxxxxxxxxxx]
Sent: Saturday, June 14, 2003 12:52 PM
To: Timothy Dennison; CinJUG (E-mail)
Subject: Re: [cinjug-users] properties file in WAR

You can put it in the WEB-INF/classes directory as Tim has suggested, or it
can be in the top-level of any of the jars in the WEB-INF/lib directory and
it will also be found. If you're using Tomcat. Try doing a
System.out.println() on one of your classes' ClassLoader object. It will
give you a rundown of all of the places where it will look for resources.
It's VERY helpful when trying to figure out where things are loaded from and
in what order. The docs help too. :-) I would suggest using the
WEB-INF/classes directory, though. That's the absolute first place it will
look.


----- Original Message -----
From: "Timothy Dennison"
To: "CinJUG (E-mail)"
Sent: Saturday, June 14, 2003 6:15 AM
Subject: Re: [cinjug-users] properties file in WAR


> You should be able to put the file in WEB-INF/classes
> as this location will always be on the classpath.
> tim
>
> --- "Herbers, Joe" wrote:
> > I'm trying to create a WAR file to deploy an app.
> > One class references a resource file called
> > message.properties via the following code. Where in
> > the WAR should/can I put the properties file? In
> > the root? I think it needs to be in the classpath,
> > so I do I need to put a CLASSPATH statement in
> > Manifest.mf or can I put it somewhere that will
> > automatically be in the classpath? Thanks.
> >
> > bundle =
> > ResourceBundle.getBundle("Message",userLocale);
> >





Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
<Prev in Thread] Current Thread [Next in Thread>