What is the module scope of Service Loader?

mark.reinhold at oracle.com mark.reinhold at oracle.com
Mon Oct 5 18:58:23 UTC 2015


2015/9/28 10:01 -0700, peter.kriens at aqute.biz:
> It is not clear to me from the description how Service Loader finds
> implementation classes. For example DriverManager.getDrivers() returns
> a list of all _installed_ drivers. It is not clear to me from which
> modules these drivers are loaded.
> 
> * Is this system wide? 
> * Just the modules the caller can read? 
> * The modules the java.sql module can read?

No to all three.  Readability does not affect service-provider lookup.

The existing class-loader-based methods in ServiceLoader will continue to
work as before: They will search for providers known to the given (or
implied) class loader, and then its parent, etc., regardless of which
modules they're in.  An existing method such as DriverManager::getDrivers
will work as before, except that it will be able to locate providers on
the application module path as well as on the class path.

- Mark


More information about the jpms-spec-experts mailing list