Christoph Nenning created WW-4266:
-------------------------------------

             Summary: resource reloading does not work in IBM JVM
                 Key: WW-4266
                 URL: https://issues.apache.org/jira/browse/WW-4266
             Project: Struts 2
          Issue Type: Bug
          Components: Core Actions
    Affects Versions: 2.3.16
         Environment: WAS 8.5 with IBM JVM 6
            Reporter: Christoph Nenning
            Priority: Trivial


When resources reloading is enabled, LocalizedTextUtil uses reflection to clear 
a private static map of the ResourceBundle class. The member name of that map 
is "cacheList".

The IBM JVM has a different impl of ResourceBundle which does not have the 
"cacheList" member. That causes a lot of NoSuchFieldExceptions in log and 
resource reloading does not work.

To fix it the patch catches NoSuchFieldException and uses clearMap() to clear 
the cache of that IBM ResourceBundle (which is just called "cache").


Notes:
- Javadoc indicates that that IBM code is based on the Apache Harmony project
- The type of that cache member is:
WeakHashMap<ClassLoader, Hashtable<String, ResourceBundleSoftRef>>
So one could argue that the patch clears too much, but IMHO that is OK as it is 
intended for development mode anyway.




--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to