我是这方面的新手并阅读了有关 WAB 的信息,但希望清除基本区别 -
我的意思是使用嵌入在 tomcat 中的 osgi 并制作 WAR 与制作 WAB ?
什么时候应该考虑每个选项?
1) 嵌入在tomcat中的OSGI
2)OSGI中的tomcat
3) 使用 WAB
最佳答案
当您被迫采用传统的 JavaEE WAR 部署模型时,嵌入在容器中的 OSGi(不仅是 Tomcat!)可能是唯一的选择,即 IT 部门操作容器并且您只能将 WAR 文件部署到它。这会在 Web 应用程序内引导整个 OSGi 框架,并允许在 Web 应用程序内进行模块化开发。然后将 Web 应用程序组合为一组 OSGi 包。它还可用于将现有的遗留 Web 应用程序迁移/转移到 OSGi 模块中。然而,这将具有挑战性。
我想将第二种方法(OSGi 中的 Tomcat)称为纯 OSGi 方法。 Tomcat 或任何其他 Servlet 容器(例如 Jetty)可以作为一个包(或一组包)部署在 OSGi 框架中。 OSGi 框架就是容器。您不再需要完全分离 Web 应用程序。可以相交。一些捆绑包/模块可能实现 Web 功能,而另一些可能不会。核心功能(核心捆绑包)可以被其他 web 捆绑包重用。
第三个选项是 OSGi 中新规范工作的结果。基本上,它是一个带有 OSGi 捆绑 list 的 Web 应用程序。因此,整个 Web 应用程序可以作为单个 OSGi 包部署在任何支持 WAB 的框架上。从技术上讲,bundle 可以作为 Web 应用程序部署到 Servlet 容器。但它可以访问 BundleContext。这允许 Web 应用程序与在同一框架中运行的其他包或 Web 应用程序进行互操作。
关于osgi - WAB和WAR的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11338156/