Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
Commons ClassLoader 1.3.2
-
None
-
None
Description
Currently all DynamicClassLoaderManagers become invalid if
- a new bundle has been started which provides packages which have been previously unresolvable by any of the DynamicClassLoader s or if
- a bundle is no longer active which used to provide at least one class being loaded through one of the DynamicClassLoader s.
In that case the DynamicClassLoaderManagerFactory is first unregistered and then reregistered (https://github.com/apache/sling/blob/trunk/bundles/commons/classloader/src/main/java/org/apache/sling/commons/classloader/impl/Activator.java#L134)
The whole refresh logic is IMHO only necessary because the JRE caches all classes being requested through a classloader.
The invalidation could be improved by only reregistering those DynamicClassLoaderManagers which have been used to
- load a class which was not available in the past but may be now available (due to a new bundle)
- load a class which was provided through a bundle which is now no longer being available
Attachments
Attachments
Issue Links
- relates to
-
SLING-1435 After a NoClassDefError classes are still not found even if they have been installed in the meantime with Java 6
-
- Closed
-