与osgi bundle交互非osgi

use*_*070 3 osgi struts2 bundles

我使用struts2作为我的Web应用程序,我想使用osgi架构进行服务和dao层.现在我不想将我的struts2操作包装为osgi包,但希望将服务和dao层打包为bundle.现在任何人都可以告诉我我的非osgi动作如何消耗osgi包(服务和dao层).我想在Web容器中部署我的struts2 Web应用程序,以便在这种情况下Web容器将如何与osgi容器(我的服务和dao部署)进行交互.请帮忙 .

Fra*_*Lee 5

您需要在Web容器和OSGi环境之间使用所谓的"桥接器".Felix和Equinox都有这种能力,但对我而言,Felix的实现效果要好得多.

你基本上想做的是:

  • 向ServletContext添加上下文侦听器
  • 在启动ServletContext时启动OSGi,在ServletContext被销毁时停止它.
  • 将ServletContext注册为OSGi上下文,将其注册为服务
  • 通过将OSGi框架对象注册为属性,将其存储在ServletContext中.

因此,要从OSGi访问Web上下文:检索ServletContext服务,然后从那里开始.

要从webcontext访问OSGi:从ServletContext属性中检索OSGi框架并从那里开始.

查看Felix文档,我也在GitHub上做了一个例子