Hi Glyn, The existing service/service-provider model has been used in various SE components for loading available providers from JARs in the installed optional packages and classpath. Since JSR 277 will define a set of repositories that allow multiple versions of modules to coexist and these modules may define services and/or service-providers, what the strawman describes is basically how JSR 277 will fit into this existing service/service-provider model and provide support for it.
While I agreed with you that enhancing the existing service/service-provider model is desirable (like #1 and #2 you pointed out), it is outside the scope of JSR 277 (i.e. JSR 277 is not chartered to change the service/service-provider model.) Therefore, I suggest we should focus our discussion on issues around how to support the existing service/service-provider model. #3 you mentioned is somewhat related to another topic I would like to bring up, and I will start the discussion in another thread. For #4, it is unclear to me what the issues are, could you elaborate? Thanks, - Stanley Glyn Normington wrote:
I am very concerned that the scope of JSR 277 is being expanded considerably without much attention being paid to the state of the art (particularly Spring-OSGi and Declarative Services). If we could implement good interoperation with JSR 291, we could delegate the complexities of supporting services to JSR 291 and technologies like Spring-OSGi that layer nicely on top of JSR 291. Apart from that, the support for services in the strawman has some obvious holes, so I don't think it is ready to be incorporated into the JSR 277 specification: 1. It seems to be lacking any form of dependency injection. 2. The namespace of services is global, but not partitioned by service interface version. The effect of this is that a module could import v1 of a service interface class and obtain an instance of the service that implements v2 of the service interface and get a class cast exception. 3. There is no support for dynamic updates of service providers and notification of service updates to service consumers. (This is consistent with JSR 277's static nature, but I point it out as this is an obvious future requirement based on our experience in OSGi.) 4. There seems to be some confusion in the strawman between loading of service interfaces/implementations and construction and publication of service instances. I wonder what other Expert Group members think of this strawman. Silence does not necessarily indicate happiness, so it would be good to have more feedback. Glyn