OSGi ConfigAdmin将Dictionary实例传递给ManagedService.updated(); 然后,该服务将从字典中提取新值.这很好,工作正常,但我到目前为止无法解释的一件事是字典值类型是否应该是特定的(整数,长,浮点,布尔)或托管服务然后解析的通用字符串/单独转换为合适的形式,而不是期望正确的值类型.
这种差异似乎无害,但对子系统/层耦合具有相当严重的后果,因为字典的创建者和ManagedService显然必须就值类型达成一致.
到目前为止,我还没有找到任何关于此的建议; 规范和几乎所有现有示例都完全忽略了问题,并使用特定类型或无类型字符串.
我错过了什么,或者这真的不明确?
这有两个答案.首先,看一下MetaType服务,它允许您配置的包声明它们接受的所有字段和类型.
但是恕我直言,最好是在面对各种数据格式时使ManagedService(Factory)实现变得健壮.特别是,确保它们始终能够作为最后的手段处理字符串,即使首选其他数据类型.这是因为某些管理代理会忽略MetaType服务,或者他们无法提供除Strings之外的任何类型的数据.Felix FileInstall就是一个很好的例子:它只是读取一个Properties文件,因此将所有内容都视为String.
对你发送的内容要严格,但对你收到的内容要慷慨.
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |