使用嵌入式OSGi定义和公开主机API

时间:2015-09-06 01:25:55

标签: java maven osgi apache-felix osgi-bundle

我目前正在努力将OSGi模块化添加到项目中以实现插件。基本思想是用户可以开发自己的插件,可以在运行时添加到主应用程序以扩展或修改其功能和/或功能。

例如,主应用程序使用Restlet为应用程序定义HTTP API。用户可能希望创建插件以添加具有特定功能的端点。或者他们可能希望创建一个存储在具有特定目的的数据库中的新实体。

据我所知,这不是一个'真正的'OSGi模块化应用程序实现,经过一些研究后,我设法很容易地将OSGi功能添加到嵌入式Felix的现有项目中。与felix.fileinstall一起,应用程序会监视一个部署文件夹,并自动安装和启动放入deploy文件夹的jar包(删除后停止和卸载)。

因此基本思想得以实施并且运作良好。我正在努力理解的是我如何定义和发布主要的应用程序API(可以通过任何插件捆绑包实现)。另一方面,我不明白bundle开发人员如何访问该API信息?

为了使捆绑开发人员能够使用API​​,他们需要某种SDK?

1 个答案:

答案 0 :(得分:0)

一种方法是将Constants.FRAMEWORK_BUNDLE_PARENT框架启动属性设置为应用程序类加载器,将Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA框架启动属性设置为要向插件公开的包列表。然后,插件将在其捆绑包清单中使用Import-Package,以与其他任何包相同的方式为您的应用程序包提供。