-
Type:
Improvement
-
Status: Resolved
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 3.0
-
Fix Version/s: 3.0
-
Component/s: Core Runtime
-
Labels:
-
Flags:Patch
I am using struts2 and under heavy load (around 100 threads) many threads are in BLOCKED state because of OgnlRuntime.findParameterTypes(). The actions we use have a generic superclass like:
public class PersonalCaptureAction extends DataCaptureAction<PersonalDTO>
OGNL handles this very bad, it enters
synchronized (_genericMethodParameterTypesCache)
all the time, at every property access of the Action. A possible workaround is to introduce another layer of superclass that is not generic.
I know that in current OGNL trunk (4.0-SNAPSHOT) caching has been rewritten, but Struts2 is using 3.0.5, and maybe it could be fixed as 3.0.6 in the git tree I found:
https://github.com/jkuhnert/ognl
I will attach a patch and a testcase.