As a follow up, we have a bit more information about our XML woes
in Equinox on J9. In trying to take the fix-the-manifests approach, we were
still left with the problem of the JAXP API classloader design. When JAXP
factories load classes they use the current context classloader to do this.
Without anything else to change it, the thread's current context classloader in
Equinox is usually DefaultClassLoader (the OSGi framework-level classloader, I
think). If I understand rightly, this classloader follows the standard parent
delegation scheme and delegates to its parent, which would be the
URLClassLoader in Equinox Main, whose parent is one of the three JRE
classloaders. J9 does have a bootclasspath override (-Xbootclasspath/p:{your-libraries-here}),
which works well on 32-bit Windows, but seems to be ignored on AIX.
The net result is we don't have a good way of forcing third party libraries
(like Log4J) to get their XML parsing needs taken care of by our bundles of
javax.xml, Xerces and Xalan. Consequently we started to take the approach of
making our stack and our code live properly with what's available in the JRE.
In many cases, this is a problem of eliminating the use of convenience methods
in the Apache libraries that now have JAXP and JAXB equivalents. In some cases
we've had to patch some of the libraries we use (like Apache Muse) to make this
work. Early results seem promising.
Regards,
Michael
.