RFR [JDK8]: 7169894: JAXP Plugability Layer: using service loader (original) (raw)

Joe Wang huizhe.wang at oracle.com
Wed Aug 29 23:08:13 UTC 2012


I actually updated the webrev yesterday with your suggestion.

Recall our discussions back in June, the suggestion was to delegate to the ServiceLoader, e.g. ServiceLoader.load(serviceClass). The rational was that the ServiceLoader uses context and then bootstrap class loader.

The spec for public static ServiceLoader load(Class service, ClassLoader loader) states: loader - The class loader to be used to load provider-configuration files and provider classes, or null if the system class loader (or, failing that, the bootstrap class loader) is to be used

This is different. In JAXP, null is recognized as bootstrap classloader, but the ServiceLoader actually assumes it as system class loader. This will be a problem, whether or now a classloader is passed to the load method.

--Joe

On 8/29/2012 1:56 AM, Paul Sandoz wrote:

For the SchemaFactoryFinder there is now a potentially subtle difference in what CL is used to load a class by SL and by SchemaFactoryFinder.createInstance. Previously the same CL was always used whatever the mechanism was used to identify the class name. Errors related to class loaders can be extremely hard to track down hence the conservative position.

-- I will say no more on the above:-) Paul. [*] If a developer can declare a service provider then such linkage errors can potentially occur.



More information about the core-libs-dev mailing list