osgi - WAB和WAR的区别

标签 osgi war wab

我是这方面的新手并阅读了有关 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/

相关文章:

OSGi 包和 war

java - 更改 Maven 中的默认结构以进行 war

jakarta-ee - Wildfly、WAR 和虚拟主机

jsf - OSGI 和 JSF 如何协同工作?

java - OSGI - 在新对象中注入(inject) bean

java - Tomcat 8 不支持major.minor版本52.0(无法加载类

java - OSGI DS @Reference 中的原子引用

java - 如何在不出现 ClassCastException 的情况下在另一个 OSGi 包中公开一个 OSGi 包中的服务

java - Karaf 包在部署时未从 .kar 加载