我正在尝试使用org.osgi.service.cm.ManagedService和Apache Felix的配置管理。
我了解ConfigurationAdmin通过方法
将新配置推送到服务public void updated(Dictionary<String, ?> dctnr) throws ConfigurationException
但我有几个问题:
方法签名似乎表明,在Dictionary<String, ?>
给定{i} {},我可以在配置中保留任何配置项。是这种情况,还是只有您可以用于配置值的字符串值?我还没有找到一个只使用Strings的例子。
鉴于您可以将对象保留为配置值,我必须遵循哪些约定才能使配置管理员实际保留它们?它们必须是Java Bean,还是Serializable或JaxB,或者完全不是其他东西?
我可以以某种方式从Configuration Admin中获取一些信息,描述为特定密钥返回的Object的类型吗? 假设我将一个日期放在一个密钥中,而一个字符串放在另一个密钥中,应用程序是否必须保留这些知识,或者我能以某种方式从ManagedService获取信息吗?
答案 0 :(得分:1)
配置对象在Configuration Admin规范(请参阅OSGi Compendium Release 5 Specification)中定义为属性字典。属性值称为核心规范中定义的主要属性类型。
这是OSGi Core Release 5 Specification中主要属性类型的定义:
type ::= scalar | collection | array
scalar ::= String | Integer | Long | Float | Double | Byte | Short | Character | Boolean
primitive ::= int | long | float | double | byte | short | char | boolean
array ::= <Array of primitive> | <Array of scalar>
collection ::= <Collection of scalar>