RFR: 8346946: Allow class loaders to bind to layers for service loading
Alan Bateman
alanb at openjdk.org
Thu Jan 2 17:52:35 UTC 2025
On Thu, 2 Jan 2025 17:13:17 GMT, David M. Lloyd <duke at openjdk.org> wrote:
> When loading services by class loader (`ServiceLoader.load(Class,ClassLoader)`), the module layers bound to the given class loader are searched for services, along with the layers bound to class loader's parent, and so on. For non-hierarchical class loader arrangements, this breaks down because the parent class loader of non-hierarchical class loaders is typically `null` (i.e. the boot class loader), while the class loader might have multiple dependency class loaders which replace the role of parent.
>
> Add an API to `ClassLoader` which allows additional layers to be bound to the class loader for the purpose of service loading by class loader, without affecting reliable configuration of modules (see [JDK-8346439](https://bugs.openjdk.org/browse/JDK-8346439)), which allows non-hierarchical class loaders to resolve service providers in dependency class loaders.
It's not the role of a custom ClassLoader to establish this relationship. So I think too premature to propose a PR with an API like this. Instead, I think it will require continuing the discussion on jigsaw-dev to try to get some consensus that there is a problem worth spending time on.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/22905#issuecomment-2568147313
More information about the core-libs-dev
mailing list