考虑在SERVICE_PID“a.b.c”上注册的托管服务。
我需要有两个不同的代码位来指定特定工厂PID的配置。
ConfigurationAdmin.createFactoryConfiguration()只接受工厂PID,而不是实例PID。那么,我如何获取特定项目的配置字典?例如,felix fileinstall解析文件名,如PID-FACTORYPID,然后抛弃FACTORYPID并仅在PID上调用createFactoryConfiguration。
如果我这样做,结果将流入'updated'方法,并在最后使用带有唯一字符串的PID。所以我以后不能提出相同的字符串来通过调用'update'来改进它。
答案 0 :(得分:2)
如果您创建工厂配置,则只能定义工厂pid。单个配置pid由config admin impl选择。
稍后查找此类配置的最佳方法是对其拥有的一个或部分属性使用过滤器。例如,你可以给它一个属性myid = 1,然后用过滤器(myid = 1)找到它。
答案 1 :(得分:0)
此问题的答案已随OSGi R7更改。 ConfigurationAdmin
中有两种新方法,可让您使用可预测的PID创建工厂配置。
Configuration getFactoryConfiguration(String factoryPid, String name, String location)
Configuration getFactoryConfiguration(String factoryPid, String name)
通过将factoryPid
和name
与波浪字符~
作为分隔符的连接来构造结果PID。