RFR [JDK8]: 7169894: JAXP Plugability Layer: using service loader
Alan.Bateman at oracle.com
Thu Aug 30 21:20:39 UTC 2012
On 30/08/2012 19:38, Joe Wang wrote:
> Hi Paul, Alan,
> I've read your latest comments. Before getting back to you on those
> items, I felt it's important we get the classloader handling
> correctly. If it's as what I suspected (as I described in the last
> email), we may have problem with using ServiceLoader.
> I've read Paul's explanation, esp. the delegation to
> ClassLoader.getSystemResourceAsStream part. It looks right as it's
> stated in the spec. But I do remember it was the issue for CR6723276
> and I did change it to Object.class.getResourceAsStream (without a way
> to call bootstrap classloader).
> Just as Paul said, the classloader stuff is quite tricky. I had three
> dummy jars that I've been running tests with. I haven't had problems
> loading those jars. But the tests were under 'normal' conditions,
> that is, the usual jdk classloader hierarchy was followed.
> Also, dummy jars may work. But I should at least test Xerces. So
> that's what I'm going to do as well.
I don't think I'm following the concern here as I thought the
SecuritySupport will either give you the TCCL or the system class loader
(but never null). As I quick check I created a no-op SchemaFactory,
packaged it up with META-INF/services/javax.xml.validation.SchemaFactory
into a JAR and verified that it was located when I deploy it on either
the class path or extensions directory. In this case, the thread
invoking SchemaFactory.newInstance had its TCCL set to the system class
loader (the default). Same thing if I change the TCCL to null because
SecuritySupport gives the Finder the system class loader for that case.
Paul - slap me in the face if I have this wrong, I don't want to cause
any confusion on this, I really just want to see a current vs. proposed
behavior for each of the finders.
More information about the core-libs-dev