OSGi - 这项技术有多成熟?

2022-09-04 02:44:11

我有一个要求,我需要在不同的基于应用程序之间共享一些Web资源(,等)。而且似乎可以用来实现这一目标?jsphtmljsimagescssSpringStruts 2OSGi

  • 有人可以给出一些关于如何实现这一目标的指示吗?OSGi
  • 其次,我想知道是否足够成熟,可以在生产应用程序中使用?OSGi

提前致谢!

编辑:我浏览了这篇文章,似乎人们能够跨Web应用程序共享Web捆绑包。唯一的区别是他们用Spring MVC做到了这一点。我想知道这是否也可以通过Struts2应用程序来实现?

编辑2:我基本上不太清楚以下内容:

  • “可共享捆绑包”(包含要共享的 Web 资源)是否会是 .war 打包的。如果是,那么最终的Web上下文将从哪里形成,因为这个捆绑包将再次与主要的“web”应用程序共享?我期望最终的Web上下文是由“可共享捆绑包”和“主”Web应用程序的合并形成的。它会自动发生吗?有什么想法吗?

答案 1

虽然OSGI可能是一个解决方案,但它可能有点过分(而且,正如Bozho指出的那样,你需要一个支持OSGI的容器)。也许看看 如何在Maven中跨项目共享资源 其他选项:

在这篇博客中,我将展示如何做第二个选项,因为在我看来,它是目前最稳定和最灵活的。将来,我将尝试 maven-remote-resources-plugin 并编写一个教程。

是的,这个想法是创建可共享Web资源的程序集,并使用maven-dependency-plugin在“资源消费者”项目中拉取和解压缩程序集。所有这些都在上面提到的博客文章中进行了解释和详细说明。如果其中有任何不清楚的地方,请告诉我。


答案 2

OSGi用于Eclipse,GlassFish,ServiceMix(以及其他),这些都是成熟的软件产品。但是,它们在本质上非常具体,我个人的观点是,OSGi不太适合普通类型的项目。据我所知(有人纠正我,如果这个领域有新闻),如果你想将OSGi与Web应用程序一起使用,你将需要一个OSGi捆绑的servlet容器。此外,将资源(html,js,图像)放在OSGi捆绑包中可能会很麻烦。


推荐