如何从OSGi Framework外部调用OSGi服务。

时间:2016-11-22 13:08:24

标签: java osgi osgi-bundle

我计划使用Java开发一个基于MVC框架的Web应用程序。此应用程序应支持插件。

因此,我计划使用OSGI容器(apache felix)创建插件,并将插件作为服务公开(使用OSGI的服务注册表功能)。

两者(Web应用程序和OSGI服务)都将在同一个JVM中运行。

所以,我需要帮助我如何在OSGI容器外部使用OSGI服务(插件)?

我基本上想在OSGI之外调用暴露的OSGI服务,在本例中是在我的Web应用程序中。

提前致谢!

1 个答案:

答案 0 :(得分:6)

要完成这项工作,您需要在启动OSGi框架的类路径中拥有该服务的api包。然后,您需要将此包导出为系统包导出。这是实现服务和非OSGi代码的bundle可以看到相同服务接口类的唯一方法。

然后使用FrameworkFactory创建一个可以启动的Framework实例。从框架中,您可以获取BundleContext并使用它来获取服务实例。

See embedding felix了解更多细节。