如何从OSGi框架外部调用OSGi服务.

par*_*ban 3 java osgi osgi-bundle

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

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

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

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

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

提前致谢 !

Chr*_*der 6

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

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

有关详细信息,请参阅嵌入felix.