【发布时间】:2026-01-31 12:05:02
【问题描述】:
我创建了一个片段包,用于访问第二方 jar 的一些添加功能。我的片段应该注册一个服务来公开这个新功能。它似乎不起作用。在深入进行故障排除之前,我想知道这是否允许?也就是说,Felix SCR 的 bundle watcher 是查看还是忽略 Fragment?
【问题讨论】:
标签: osgi apache-felix declarative-services
我创建了一个片段包,用于访问第二方 jar 的一些添加功能。我的片段应该注册一个服务来公开这个新功能。它似乎不起作用。在深入进行故障排除之前,我想知道这是否允许?也就是说,Felix SCR 的 bundle watcher 是查看还是忽略 Fragment?
【问题讨论】:
标签: osgi apache-felix declarative-services
啊哈,我自己在规范第 112.4.2 节中找到了答案:“SCR 忽略了片段中指定的服务组件清单标头。”这与 3.14.3 一致:“以下列表包含片段包中不得使用的标头:Bundle-Activator”
【讨论】:
是的。但是主机包必须对此开放。通过打开,我的意思是主机包必须配置 Service-Components 标头,以便可以找到片段中的任何描述符。例如:
Service-Components: OSGI-INF/*.xml
将在主机捆绑所有附加片段的OSGi-INF/ 文件夹中找到所有.xml 文件。
我看到 Eclipse SmartHome 项目使用这个解决方案来使他们的 UI 更加可定制。
更多信息:http://apache-felix.18485.x6.nabble.com/DS-amp-fragments-td5004610.html
【讨论】:
Service-Component: OSGI-INF/*.xml(不是复数)对我有用。