-
Bug
-
Resolution: Done
-
Major
-
None
-
jbossws-native-3.0.3, jbossws-metro-3.0.3
-
None
-
Workaround Exists
-
The JAXB implementation contains a package of classes to optimise field and method access by dynamically generating classes to avoid reflection, this has a start-up performance hit but then leads to an optimised runtime.
The package is: -
'com.sun.xml.bind.v2.runtime.reflect.opt'
Within the Injector class is a HashMap to maintain a cache of these classes against the classloader they were created for: -
private static final Map<ClassLoader,WeakReference<Injector>> injectors =
Collections.synchronizedMap(new WeakHashMap<ClassLoader,WeakReference<Injector>>());
A WeakReference has been used to wrap the value to prevent the value retaining a reference to the ClassLoader and then preventing garbage collection and leading to a leak.
The problem is that nothing retains a reference to the Injector so as this is wrapped with a WeakReference it is garbage collected.
I will attach to this case a new version of Injector.java.
The fix switches to using a Strong reference to the Injector so it is not garbage collected.
To maintain the original requirements the Injector will no longer hold a reference to the ClassLoader and will instead make use of the one passed in.
Within the Injector the HashMap of classes will reference the Class with a WeakReference. If we get a WeakReference with no class it means the class was previously loaded but garbage collected, in this case try to load the class by name from the classloader - if this fails then redefine the class.
- blocks
-
JBWS-2615 JBoss does't unload web services classes
- Closed
- is incorporated by
-
JBPAPP-1196 $JAXBAccessorF_ and $JAXBAccessorM_ cache loosing classes and failing to re-create classes.
- Resolved
-
JBPAPP-1441 JAXB - $JAXBAccessorF_ and $JAXBAccessorM_ cache loosing classes and failing to re-create classes.
- Resolved
-
JBPAPP-1885 JAXB - $JAXBAccessorF_ and $JAXBAccessorM_ cache loosing classes and failing to re-create classes
- Resolved
- is related to
-
JBWS-2302 Verify dependencies on outstanding Sun issues
- Closed
- relates to
-
JBWS-2301 java.lang.LinkageError: duplicate class definition: com/sun/xml/ws/security/secext10/SecurityHeaderType$JaxbAccessorF_any
- Closed