On 12 Jan 2012, at 5:29 PM, Emmanuel Bernard wrote:

> On Fri 2012-10-12 15:13, Hardy Ferentschik wrote:
>> 
>> On 12 Jan 2012, at 3:00 PM, Steve Ebersole wrote:
>> 
>>> "Java services api" == ServiceLoader I assume?
>> 
>> correct 
>> 
>>> Going on that assumption:
>>> 
>>> No.  ServiceLoader is just a discovery mechanism.  There still needs to be 
>>> something that, as you say, negotiates amongst the various discovered 
>>> implementations of a particular service.  2 well known ServiceLoader uses 
>>> are JDBC drivers and image processors, each illustrating a different 
>>> approach that are really inherent to their respective problem domains.  In 
>>> the case of JDBC drivers, the discovery is just used to register all the 
>>> available drivers; users must still specify which driver they want via JDBC 
>>> url protocol.  In the case of image processing (as I understand it anyway, 
>>> not really my forte) the choice of processor is more intrinsic to the image 
>>> you ask to have processed based on MIME type.
>>> 
>>> Here is sound like you more have the JDBC style, where discovery is just 
>>> making the complete set of possibilities known.  The user would still need 
>>> to make a distinction.  Or maybe you have some special rules like (a) using 
>>> the standard service if it is the only one discovered; (b) using the 
>>> "other" service if 2 are discovered; (c) requiring the user tell you if 3 
>>> or more are found. Many ways to skin that cat.
>> 
>> Right. I would expect the user to make this distinction via the 
>> configuration. 
>> 
>> I think really the problem is that what we have is actually not a 
>> ServiceManager (at least not what I understand under this term). It is a 
>> fancy way to instantiating a class and giving it a life cycle (aka #start(), 
>> #stop()).
>> We really have more of a BeanLifeCycleManager. 
> 
> Basically for you a Service must allow for multiple implementations
> and a ServiceManager must offer a way to switch between various
> implementations.

I orientate myself in this case at the ServiceLoader docs (especially since we 
are using this mechanism as well) which says:
"A service is a well-known set of interfaces and (usually abstract) classes. A 
service provider is a specific implementation of a service."

What I am saying is that by calling it a ServiceManager and by using the 
ServiceLoader API I have a certain expectation on how things 
will work. I would have expected that each of the services has its own service 
file and that we determine the service to use by using the 
Service Loader API + some config code.

> I don't see how renaming this class a BeanLifeCycleManager makes any of
> this better.

Just trying to avoid wrong expectations.

--Hardy


_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to