我正在为我的Web应用程序使用struts2,我想使用osgi体系结构来进行服务和dao层。现在我不想将我的struts2操作包装为osgi包,但希望将服务和dao层打包为bundle。现在任何人都可以告诉我我的非osgi动作如何消耗osgi包(服务和dao层)。我想在Web容器中部署我的struts2 Web应用程序,以便在这种情况下Web容器如何与osgi容器(我的服务和dao部署)进行交互。请帮忙。
答案 0 :(得分:5)
您需要在Web容器和OSGi环境之间使用所谓的“桥接器”。 Felix和Equinox都有这种能力,但对我而言,Felix的实现效果要好得多。
你基本上想做的是:
所以要从OSGi访问Web上下文:检索ServletContext服务,然后从那里开始。
从webcontext访问OSGi:从ServletContext属性中检索OSGi框架并从那里开始。
上回顾了一段时间答案 1 :(得分:-1)
最肯定的是,这不起作用。为什么您认为将一半的应用程序移动到OSGi应该是一个好主意?要么你应该全部移动,要么都不移动。
您可以在war文件中部署struts图层,并从中访问OSGi服务。我认为在Virgo和Apache Karaf中这是可能的。这意味着要加强与OSGi结构的战争。例如在Karaf中,您可以使用wab文件,该文件是具有清单的war文件。