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