我使用的struts2我的web应用程序,我想使用OSGi的架构服务和DAO层。 现在,我不想换我Struts2的行动为OSGi包,但希望服务和DAO层被打包成捆。 现在有谁能够告诉我,我的非OSGi的行动如何能够占用OSGi包(服务和DAO层)。 我想在部署Web容器我struts2的web应用程序,以便Web容器将如何与OSGi容器(我的服务和DAO部署)在这种情况下进行交互。 请帮忙 。
Answer 1:
你需要你的Web容器和你的OSGi环境之间所谓的“桥梁”。 无论菲利克斯和Equinox有能力,但对我来说,菲利克斯执行工作要好得多。
你基本上想要做的是:
- 上下文监听器添加到您的ServletContext
- 在启动了OSGi开始ServletContext的时候,停下来的时候ServletContext中被摧毁。
- 通过注册它作为一种服务传递ServletContext的OSGi的上下文
- 通过注册它作为一个属性存储在ServletContext OSGi框架对象。
所以从OSGi的访问Web上下文:检索ServletContext的服务,并从那里走。
要从webcontext访问的OSGi:检索从ServletContext属性OSGi框架,并从那里走。
检查菲利克斯文档 ,还我已经做出了表率前阵子在GitHub上
Answer 2:
这确是行不通的。 为什么你认为它应该是一半的应用程序迁移到OSGi的一个好主意? 要么你应该移动的,或无所有。
您可以到支柱层在战争文件和访问从中部署OSGi服务。 我认为这是可能的处女座和Apache Karaf。 这意味着加强与OSGi的结构的战争。 例如,在Karaf可以使用WAB文件是一个清单战争文件。
文章来源: Interacting Non osgi with osgi bundles