部署 WAR 还是“胖”JAR?
2022-09-01 21:01:08
我注意到很多项目(DropWizard,Grails等)开始接受“胖”JAR(使用像Jetty或Tomcat这样的嵌入式Web服务器)的概念,而不是传统的WAR部署。这两种方法都涉及单个JVM进程(即,无论将多少个VAR部署到Tomcat,它都是相同的JVM进程)。
在什么情况下,任何一种部署方法都优于另一种部署方法?
我注意到很多项目(DropWizard,Grails等)开始接受“胖”JAR(使用像Jetty或Tomcat这样的嵌入式Web服务器)的概念,而不是传统的WAR部署。这两种方法都涉及单个JVM进程(即,无论将多少个VAR部署到Tomcat,它都是相同的JVM进程)。
在什么情况下,任何一种部署方法都优于另一种部署方法?
以下是一些原因:
支持 JAR:
支持 WAR 或 EAR:
话虽如此,您始终可以提供2或3种类型的可执行文件以满足所有需求。任何构建工具都使这变得简单。
使用嵌入式Web服务器分发应用程序允许独立设置,只需调用即可运行它。java -jar application.jar
但是,可能有用户希望控制使用哪个Web服务器,或者希望将多个应用程序部署到单个Web服务器中(例如,为了防止端口冲突,特别是与端口80和8080)。在这种情况下,“胖”jar可能会导致问题或至少一些不需要的代码,从而导致更大的内存占用。
恕我直言,对于这两种情况,最好的方法是提供两个工件:一个“胖”罐子用于(更容易)的独立设置,另一个是仅用于应用程序的war/ear,用于那些想要在自己的容器中部署应用程序的人。