【发布时间】:2011-01-13 15:11:11
【问题描述】:
我正在尝试创建一个监视服务注册的包,并根据服务接口的 API 包中嵌入的某些元数据执行一些额外的任务。元数据主要由一个或多个属性文件组成,所以我的想法是使用Bundle.findEntries(),但由于元数据嵌入在API包中,我不能只做ServiceReference.getBundle().findEntries()之类的事情,因为这会尝试找到属性在服务实现包中,而不是在 API 包中。
我曾考虑从ServiceReference ObjectClass 属性中获取服务 API 类名称,然后使用 Package Admin 服务或 FrameworkUtil.getBundle(),但这两者都需要 Class--但我如何获得 @ 987654326@的服务接口?执行这项工作的包可能没有导入该类的包,所以Class.forName() 将不起作用。
我的另一个选择是同时监视捆绑和服务事件:第一个创建包含元数据的捆绑注册表,第二个在注册服务时使用第一个。在走这条路之前,我想看看是否有更简单的方法。
【问题讨论】:
标签: osgi