我计划使用Java开发一个基于MVC框架的Web应用程序。此应用程序应支持插件。
因此,我计划使用OSGI容器(apache felix)创建插件,并将插件作为服务公开(使用OSGI的服务注册表功能)。
两者(Web应用程序和OSGI服务)都将在同一个JVM中运行。
所以,我需要帮助我如何在OSGI容器外部使用OSGI服务(插件)?
我基本上想在OSGI之外调用暴露的OSGI服务,在本例中是在我的Web应用程序中。
提前致谢!
答案 0 :(得分:6)
要完成这项工作,您需要在启动OSGi框架的类路径中拥有该服务的api包。然后,您需要将此包导出为系统包导出。这是实现服务和非OSGi代码的bundle可以看到相同服务接口类的唯一方法。
然后使用FrameworkFactory创建一个可以启动的Framework实例。从框架中,您可以获取BundleContext并使用它来获取服务实例。
See embedding felix了解更多细节。