Meaningless Drivel is fun!*
The moose likes JSP and the fly likes Property file is cached Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Java » JSP
Bookmark "Property file is cached" Watch "Property file is cached" New topic
Author

Property file is cached

Yash Sharma
Ranch Hand

Joined: Jan 30, 2003
Posts: 61
I have a web-interface to edit the property files. Through this JSP the user first selects a property file, I then display all the kesy for this file with checkboxes, user can select the key(s) and then change the values for these if he so wishes.
I am able to save the changes rightly to the property file. However when I select the same key for the same file again the old property shows up. I have to restart the application to get the changed property.
I have disallowed caching of my JSP. I religiously set all objects (including the property file objects) to null in the JSP everytime. How come the property file object is still being cached?
William Brogden
Author and all-around good cowpoke
Rancher

Joined: Mar 22, 2000
Posts: 12769
    
    5
Exactly where is the property file read the first time?
Do you create a Properties object with it?
How does the JSP know which properties file to write?
Bill
David O'Meara
Rancher

Joined: Mar 06, 2001
Posts: 13459

I'll add my own question as well:
How does the application know to reload the properties after you change them?
Typically a .properties file is read all-at-once into a java.util.Properties instance. If that loading sequence doesn't contain logic to reload when the file changes, the properties will never be updated.
Yash Sharma
Ranch Hand

Joined: Jan 30, 2003
Posts: 61
Thanks Bill and David,
I am loading the Properties file using a static method of a custom class called PropertyLoader, this is an opensource code that I am using, which laods the file as Resource bundle as follows. I call this static method from my JSP to get the Properties file.

The files are located inside package hierarchy. In my JSP I get the Properties file object using this said static method. Once I am done using the Properties file I set it to null. I have also disabled caching of my JSP. Infact my single JSP does the following:
1. Displays a list of property files available (read from another property file), set this properties file obejct to null after populating the combolist.
2. When use select a file display below (frame like fashion, but actually done without using frames and in the same JSP using query strings) the properties with checkboxes; set this properties file object to null.
3. Display the form with editable values for chosen property, ; set this properties file object to null.
4. Submit this form to a servlet that modifies the property file, confirm changes and give a back-hyperlink to (1) page.
The property file names are passed as hidden form field. After I edit the file the changes are saved however the new property file is not loaded.
[ December 15, 2003: Message edited by: Yash Sharma ]
William Brogden
Author and all-around good cowpoke
Rancher

Joined: Mar 22, 2000
Posts: 12769
    
    5
I am guessing that the ClassLoader is somehow caching the data. Is there some reason you are going through the bit with the ResourceBundle instead of reading a file?
Bill
Yash Sharma
Ranch Hand

Joined: Jan 30, 2003
Posts: 61
The main reason to go with loading the properties as ResourceBundle (or even other wise using the ClassLoader) is to avoid giving absolute paths. I worked as per the advice given here.
My properties file will be located inside a package structure (com.mypkg.myclasses) in WEB-INF/classes. When I try using the following code I get a FileNotFoundException (whether I prefix the package hierarchy or not). I am testing the app on Tomact as of now however the application would be hosted on Websphere finally and I don't want to specify to the user: put the Properties file inside bin or there or that. I want that my files should be where I want them to be.

Is there any way I can provide the absolute path, when loading using IO to avoid the classloader (without hardcoding it) to the PropertyLoader class?
[ December 15, 2003: Message edited by: Yash Sharma ]
 
jQuery in Action, 2nd edition
 
subject: Property file is cached