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.

To me a Service renders a... service. In Hibernate Search services are
lazy loaded and we have the notion of ServiceProvider to cope with that.
We also happen to have a way to chose between one implementation vs
another via configuration (see backends, optimization strategies etc).

I don't see how renaming this class a BeanLifeCycleManager makes any of
this better. AFAIK the only beans that have lifecycles are managed bean,
CDI beans or Enterprise JavaBeans. None of them mandate an interface /
implementation split and they don't carry the idea of pluggable
implementations necessarily.

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

Reply via email to