我是这方面的新手并阅读了有关 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 捆绑清单的 Web 应用程序。因此,整个 Web 应用程序可以作为单个 OSGi 包部署在任何支持 WAB 的框架上。从技术上讲,bundle 可以作为 Web 应用程序部署到 Servlet 容器。但它可以访问 BundleContext。这允许 Web 应用程序与在同一框架中运行的其他包或 Web 应用程序进行互操作。