This started with Trin Issue 891 https://issues.apache.org/jira/browse/TRINIDAD-891
To avoid the locking in the class loader we'd like to store a map of name->class per app. However the external context app map calls through to the ServletContext. The Servlet specification doesn't specify whether the ServletContext performs any locking on the ServletContext attributes and the ServletContext doesn't expose the necessary methods for efficient concurrent access (essentially the operations exposed on ConcurrentMap) necessary to work efficiently in many cases even if the ServletContext didn't need to perform locking on reads. The result is that the ExternalContext's ApplicationMap can't implement ConcurrentMap.
We'd like to add a method to the RequestContext to get an application scoped concurrent map. This would not call through to the servlet context. The api proposed is this:
- Gets a per application concurrent map. There is no synchronization
- with ServletContext attributes.
public abstract ConcurrentMap<String, Object> getApplicationScopedConcurrentMap();