Yes, I see a lot of places using

   if (loadProviderFromProperty())
       return provider;
   if (loadProviderAsService())
       return provider;

The 1st using Class.forName() and 2nd ServiceLoader.load().

I was thinking that the 1st method will not work because Class.forName() on an 
internal class in another module will not work after module, but now I believe 
the 2nd method would not work also. Is that right? Or writing the class name in 
a services file automatically exports it as a service?

Now my preferred order will be

   if (loadProviderFromProperty())
       return provider;
   if (loadProviderAsInstalledService())
       return provider;
   if (loadProviderAsService())
       return provider;

Thanks
Max


On Aug 13, 2014, at 22:20, Alan Bateman <alan.bate...@oracle.com> wrote:

> 
> ServiceLoader does not have a way to configure a preferred provider so this 
> is one reason why you'll see places where a system property can be used to 
> configured the preferred implementation.
> 
> -Alan.

Reply via email to