[ 
https://issues.apache.org/jira/browse/WW-5101?focusedWorklogId=527016&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-527016
 ]

ASF GitHub Bot logged work on WW-5101:
--------------------------------------

                Author: ASF GitHub Bot
            Created on: 22/Dec/20 00:53
            Start Date: 22/Dec/20 00:53
    Worklog Time Spent: 10m 
      Work Description: JCgH4164838Gh792C124B5 commented on pull request #460:
URL: https://github.com/apache/struts/pull/460#issuecomment-749276966


   Hello Apache Struts Team.
   
   This is an an initial attempt to address the reported issue.  Basic local 
testing indicates it is working, with no illegal reflective access warnings 
seen with Java 11.  People may decide to eventually remove the 
`clearTomcatCache()` method in the future, but for the moment this PR attempts 
to correct its behaviour so that it acts as the previous code and comments 
indicate it should.
   
   Please let me know if the PR looks OK when you have time.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 527016)
    Time Spent: 20m  (was: 10m)

> AbstractLocalizedTextProvider illegal reflective access operation has occurred
> ------------------------------------------------------------------------------
>
>                 Key: WW-5101
>                 URL: https://issues.apache.org/jira/browse/WW-5101
>             Project: Struts 2
>          Issue Type: New Feature
>          Components: Core
>    Affects Versions: 2.5.26
>            Reporter: Greg Huber
>            Assignee: Greg Huber
>            Priority: Minor
>             Fix For: 2.6
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Testing on java 11 AbstractLocalizedTextProvider outputs
> WARNING: An illegal reflective access operation has occurred
>  WARNING: Illegal reflective access by
>  com.opensymphony.xwork2.util.AbstractLocalizedTextProvider
>  (file:struts2-core-2.5.26.jar|file:///struts2-core-2.5.26.jar) to field 
> java.util.ResourceBundle.cacheList
>  WARNING: Please consider reporting this to the maintainers of
>  com.opensymphony.xwork2.util.AbstractLocalizedTextProvider
>  WARNING: Use --illegal-access=warn to enable warnings of further illegal
>  reflective access operations
>  WARNING: All illegal access operations will be denied in a future release
> {code:java}
> clearMap(ResourceBundle.class, null, "cacheList");
> private void clearMap(Class cl, Object obj, String name)  throws 
> NoSuchFieldException, IllegalAccessException,
>  NoSuchMethodException, InvocationTargetException{ 
>     Field field = cl.getDeclaredField(name);
>     field.setAccessible(true);
>     Object cache = field.get(obj);
>         synchronized (cache) {
>             Class ccl = cache.getClass();
>             Method clearMethod = ccl.getMethod("clear");
>             clearMethod.invoke(cache);
>         }
> }
>  {code}
> When it executes the line field.setAccessible(true); produces the warning.
> Seems we might be able to replace
> {code:java}
> try{
>     clearMap(ResourceBundle.class, null, "cacheList"); }
> catch (NoSuchFieldException e) { 
>     // happens in IBM JVM, that has a different ResourceBundle impl it has a 
> 'cache' member
>    clearMap(ResourceBundle.class, null, "cache");
> }{code}
>  with
> {code:java}
> ResourceBundle.clearCache();
> {code}
> Tomcat also uses the same method to flush resourceEntries. Tomcat checks 
> org.apache.catalina.loader.WebappClassLoader but for version #9 its using 
> org.apache.catalina.loader.ParallelWebappClassLoader, so defaults to
> {code:java}
> clearMap(cl.getSuperclass(), loader, TOMCAT_RESOURCE_ENTRIES_FIELD);
> {code}
> Commenting out the tomcat reload, the Struts bundles seem to reload ok.  
> Maybe drop this going forward?
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to