注册自定义 org.osgi.resource.Resource

Register a custom org.osgi.resource.Resource

如何注册我自己的 OSGi 资源(org.osgi.resource .Resource,不是包中的文件),它可以定义功能和要求。

我知道,我可以在捆绑清单中定义一些。但是我想在运行时定义一些。

我的用例:我想为不同的环境(硬件、OS、配置)编写一堆包。仅当满足其要求时才应启动每个捆绑包。现在,我想构建一个环境检测包,它对环境运行几个或多或少复杂的检查,然后提供相应的功能。 我的目标是,只启动与其环境相匹配的包。

我花了很多时间,但我没有找到注册捆绑包以外的资源的方法。

我觉得你要做的是使用能力和需求。您可以根据运行时环境发明自己的 capability namespace and then have your bundles require it via the Require-Capability manifest header. You can configure the framework instance to provide the appropriate capability via the org.osgi.framework.system.capabilities.extra 框架启动 属性。