Sling Dynamic Include(SDI)配置多组件时仅首个生效问题咨询
SDI多资源类型OSGi配置不生效解决方案
问题根源
include-filter.config.resource-types 是Sling Dynamic Include定义的OSGi多值字符串属性,将多个资源类型包裹在同一个带方括号的字符串中配置时,会被OSGi识别为单个属性值,最终仅第一个资源类型能匹配成功。
不同场景的正确配置方式
- 场景1:通过Felix OSGi控制台配置
直接在include-filter.config.resource-types对应的输入区域每行填写一个资源类型,不需要添加引号、方括号或分隔逗号,示例:my-app/components/content/highly-dynamic my-app/components/content/highly-dynamic2 my-app/components/content/highly-dynamic3 - 场景2:通过代码仓库中的sling:OsgiConfig XML节点配置
将属性声明为String[]数组类型,每个资源类型单独作为value节点,示例:<property name="include-filter.config.resource-types" type="String[]"> <value>my-app/components/content/highly-dynamic</value> <value>my-app/components/content/highly-dynamic2</value> <value>my-app/components/content/highly-dynamic3</value> </property> - 场景3:通过runmode对应的.cfg/.config配置文件配置
按OSGi多值属性语法书写,示例:include-filter.config.resource-types=["my-app/components/content/highly-dynamic","my-app/components/content/highly-dynamic2","my-app/components/content/highly-dynamic3"]
验证方法
配置完成后可进入Felix控制台的Sling Dynamic Include配置页,查看已生效的资源类型列表,确认所有资源类型都已被正确识别即可。
内容的提问来源于stack exchange,提问作者Abhishek Sinha
相关产品推荐
相关产品推荐

