2016-11-22 49 views
2

我打算开发一个使用Java并基于一些MVC框架的Web应用程序。这个应用程序应该支持插件。因此,我打算使用OSGI容器(apache felix)创建插件并将插件作为服务(使用OSGI的服务注册表功能)公开插件。如何从OSGi框架之外调用OSGi服务。

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

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

我基本上想调用OSGI以外的公开OSGI服务,在这种情况下在我的web应用程序中。

在此先感谢!

+0

题外话:我有类似的要求:用于后端模块化的OSGi和用于前端模块化的Eclipse E4。结果是一个允许HTML5/CSS3/JavaScript(前端)+ OSGi/Eclipse(后端)的工作(正在进行)项目:https://github.com/erdalkaraca/hi5 –

+0

为什么你不运行你的OSGi内部的Web应用程序? –

回答

5

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

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

See embedding felix了解更多详情。

+0

非常感谢!基督教 – parthiban