Module system and services directory in META-INF

Alan Bateman Alan.Bateman at oracle.com
Wed Dec 27 12:55:55 UTC 2017


On 27/12/2017 12:22, Cédric Champeau wrote:
> :
>
> 1. is the spec saying somewhere that no-one should ever use
> `META-INF/services` for something else than a service for `ServiceLoader`?
> If not, then ModuleFinder should probably be patched to recognize that
> sometimes it's not the case.
The META-INF/services directory has been used for service configuration 
files for a long time (I think originally specified in Java SE 1.3). 
Adding properties files or other resources in that location may cause 
problems for tools and libraries that scan that location.

I haven't read the thread that you linked to but I assume it's about JAR 
files on the module path that are treated as automatic modules. In that 
case, the relevant part of the ModuleFinder spec is:

"The contents of entries starting with META-INF/services/ are assumed to 
be service configuration files (see ServiceLoader). If the name of a 
file (that follows META-INF/services/) is a legal class name then it is 
assumed to be the fully-qualified class name of a service type. The 
entries in the file are assumed to be the fully-qualified class names of 
provider classes."

> 2. the 2d aspect of the question is what Jochen described as "would the
> service loader infrastructure let us unload services".
>
Jochen's mail mentions loading modules dynamically so I assume this 
means module layers. If so then unloading is possible and it works well 
with services.

-Alan


More information about the jigsaw-dev mailing list