Ugly things done to support multiple ContentHandlerFactory and URLStreamHandlerFactory

Alan Bateman Alan.Bateman at oracle.com
Thu Oct 13 18:59:55 UTC 2016


On 13/10/2016 19:40, Thomas Watson wrote:

>
> I don't think service loader lookup is going to help us here.  Each 
> framework instance will need its own provider but the set of providers 
> will be constant to what is discovered on the system class loader.  As 
> additional frameworks come up their providers will have no chance to 
> be discovered.  Furthermore each framework implementation can be 
> loaded by a non-system class loader.  For the usecase I am concerned 
> about the framework implementation will not be loaded by the system 
> class loader but instead by some dynamic class loader that can be 
> thrown away when the framework instance is torn down.  For Eclipse a 
> small launcher is the only jar on the system class loader.  The 
> framework itself is loaded with a custom class loader the launcher 
> creates.
I should have been clearer. I was trying to point out that you can 
locate URLStreamHandlerProvider implementations that aren't built-in or 
deployed on the class path yourself. That should be enough to create the 
URLStreamHandler and do the wrapping that I think you are doing.

> :
>
> I have not been able to determine why an SPI is needed for providing 
> URLStreamHandlerFactory implementations to the service loader but not 
> for ContentHandlerFactory implementations.  The 
> URLStreamHandlerProvider is just an empty abstract class that 
> implements URLStreamHandlerFactory.  Why couldn't the provider type 
> just be URLStreamHandlerFactory directly similar to how 
> ContentHandlerFactory is?
This is a security sensitive area and the permission check needed here 
couldn't be reliably enforced if the interface URLStreamHandleFactory 
were the service type. There is discussion on net-dev where this point 
was discussed.

Speaking of net-dev, then maybe this thread should move there as this 
topic is really more of a URL issue rather than module system issue.

-Alan


More information about the jigsaw-dev mailing list