我是这方面的新手并阅读有关WAB的信息,但希望明确基本的区别 - 我的意思是使用嵌入在tomcat中的osgi并制作WAR而不是制作WAB?
什么时候应该考虑每个选项?
1)嵌入在tomcat中的OSGI
2)OSGI中的tomcat
3)使用WAB
答案 0 :(得分:8)
当您被迫使用传统的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应用程序与在同一框架中运行的其他bundle或Web应用程序进行交互。