Meaningless Drivel is fun!
The moose likes Struts and the fly likes Problem with ResourseBundle.Control using struts Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Elasticsearch in Action this week in the Big Data forum!
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "Problem with ResourseBundle.Control using struts" Watch "Problem with ResourseBundle.Control using struts" New topic

Problem with ResourseBundle.Control using struts

PradeepKumar Dev Venkata

Joined: Feb 19, 2009
Posts: 6
Hello all,

I have a requirement to make our web application to reload the ResourceBundle (a properties file) for regular interval. Basically this is to avoid restarting the application server for .properties file changes (FYI..we use Struts Framework and Jboss application server).

For this, I used a util class which will extends ResourceBundle.Control in Java SE 6 and override its getFormats() and newBundle() methods, made getTimeToLive method to return different timeToLive values TTL_DONT_CACHE,0 etc.. and passed this instance to in ResourceBundle.getBundle method.

Something like below...

In Action class:

ResourceBundle msgBundle = ResourceBundle.getBundle("resources.ApplicationResources",ResourceBundleController.instance());

PROBLEM IS: With these changes I couldnt achive the expected outcome. Application is not reloading the cache for any of the timeToLive I mentioned above.. I also have a doubt how can I do same changes on jsp which uses <bean:message .. > tag.

Please correct me if I am wrong anywhere... or suggest any other alternative. Any help is really appreciated.

Below is the util class (ResourceBundleController) used FYI ::

import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.ResourceBundle.Control;

public class ResourceBundleController extends Control

public static ResourceBundleController instance() {
return new ResourceBundleController();

private long timeToLive = ResourceBundle.Control.TTL_DONT_CACHE;

public long getTimeToLive(String baseName, java.util.Locale locale) {
return timeToLive;

public boolean needsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime) {
return super.needsReload(baseName, locale, format, loader, bundle, loadTime);

public void setTimeToLive(long timeToLive) {
this.timeToLive = timeToLive;

public List<String> getFormats(String arg0) {
return super.getFormats(arg0);

public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader,
boolean reload) throws IllegalAccessException, InstantiationException, IOException {
return super.newBundle(baseName,locale, format, loader, reload);


Thanks in advance,
Amit Ghorpade

Joined: Jun 06, 2007
Posts: 2753

"PradeepKumar dv " please check your private messages for an important administrative matter. You can check them by clicking the My Private Messages link above.

|Asking Good Questions|
Bear Bibeault
Author and ninkuma

Joined: Jan 10, 2002
Posts: 62127

Please be sure to ask Struts questions in the Struts forum. I have moved this post there for you.

[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
PradeepKumar Dev Venkata

Joined: Feb 19, 2009
Posts: 6
Hello all,

Please someone help me in this..

Thanks in advance.

Ramakrishnan Vaidhyanathan

Joined: Jan 03, 2013
Posts: 1

Even i have same requirements can any one help us?

Thanks in Advance,
I agree. Here's the link:
subject: Problem with ResourseBundle.Control using struts