在我们正在开发的应用程序中,我有一个用于实现数据提供程序组件的通用接口,我将这些提供程序作为服务挂钩.
我的一位同事建议,最好只创建一个可以跟踪这些实现的服务(当前有多少可用,也许可以通过getter将它们提供给代码库的其他部分),我们可以注册/取消注册它们使用实现bundle的激活器.
虽然这通常可行,但这(几乎)完全是服务层首先提供的,而对我来说,感觉就像我们正在复制功能.
你怎么看?
在我的应用程序中,使用服务本身是没用的.您始终需要一些外部配置信息才能使服务可用.
与ConfigurationAdmin结合使用的组件是有意义的,因为对于我创建的每个配置,将创建一个组件实例.这对我的用例来说非常完美.
现在,问题出现了,如果我想以编程方式使用其他包中的组件,该怎么办?这有意义吗?
我知道我可以再次将组件导出为服务,并从其他bean中使用它,但是假设我有一个servlet,用户可以在其中创建配置,并且对于每个配置的实例,都有一个操作列表; 当他点击动作时,我需要找到合适的组件,并对其执行操作.
在OSGi之上实现此功能的最佳方法是什么?