OSGi配置管理和元类型服务
我一直在使用OSGi配置管理员在我们的程序中实现一些基本的配置功能。我现在开始研究规范,因为我需要每个配置属性的类型信息 我不清楚这两个服务是如何相互作用的。配置管理员处理基本上未类型化的键/值对。元类型服务知道配置属性的名称和类型(除其他外),但不知道它们的值。我的目标是为所有具有配置和相应元类型信息的组件动态生成配置/首选项对话框。根据元类型服务规范,服务被设想为涵盖这个确切的用例。所以我认为这应该不会太难 我可以使用以下示例代码检索元类型信息:OSGi配置管理和元类型服务,osgi,Osgi,我一直在使用OSGi配置管理员在我们的程序中实现一些基本的配置功能。我现在开始研究规范,因为我需要每个配置属性的类型信息 我不清楚这两个服务是如何相互作用的。配置管理员处理基本上未类型化的键/值对。元类型服务知道配置属性的名称和类型(除其他外),但不知道它们的值。我的目标是为所有具有配置和相应元类型信息的组件动态生成配置/首选项对话框。根据元类型服务规范,服务被设想为涵盖这个确切的用例。所以我认为这应该不会太难 我可以使用以下示例代码检索元类型信息: ServiceReference metat
ServiceReference metatypeRef = bundleContext.getServiceReference(MetaTypeService.class.getName());
MetaTypeService service = (MetaTypeService) bundleContext.getService(metatypeRef);
MetaTypeInformation information = service.getMetaTypeInformation(myBundle);
检索到所需捆绑包的MetaTypeInformation对象后,我可以访问MetatypeXML定义中包含的所有信息。特别是,可以访问ObjectClassDefinition:
ObjectClassDefinition ocd = information.getObjectClassDefinition(pid, null);
AttributeDefinition[] attributes = ocd.getAttributeDefinitions(ObjectClassDefinition.ALL);
我的问题是:
- 给出了属性定义;如何检索基础属性的实际值?我知道它的名字,但不知道它的价值
- 如何枚举当前存在(活动和非活动)的所有捆绑包中所有组件的元类型信息?我知道如何通过配置管理界面列出所有配置。是否有一种方法可以从配置中获取元类型信息李>
MetaTypeService
是OSGi服务注册表中的一项服务,您可以使用它来请求给定捆绑包的MetaTypeInformation。如果您依次为每个bundle请求元类型信息,那么您将获得所需的信息。配置管理员和元类型之间没有硬链接,因此配置对象无法知道是否存在元类型