Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 6.1.11
-
Fix Version/s: 6.1.25
-
Component/s: None
-
Labels:None
-
Number of attachments :
Description
I can't seem to reopen JETTY-420, so I'm filing this separately.
Jetty includes "javax.xml" in the list of packages that the WebAppClassLoader always consults the parent first (I'll call such packages as "pass-through" packages.) In JRE6, rt.jar now contains javax.xml.soap.AttachmentPart (a part of SAAJ API), which refers to javax.activation.DataHandler.
However, "javax.activation" is not listed as a pass-through package. As a result, if the web application directly references DataHandler and also uses SAAJ, it'll result in a classloader constraint violation. This is the root cause of JETTY-420.
Unfortunately, applications that need to run on Java5 needs to bundle activation.jar and SAAJ, thus there's nothing apps can do to avoid this bug.
In general, everything referenced by pass-through packages need to be also listed as a pass-through packages to avoid such a constraint violation.
In this case, the fix is to add "javax.activation" to the list of system classes. This definition is given in WebbAppContext._systemClasses.