我注意到许多项目(DropWizard,Grails等)开始接受" fat"的概念。 JAR(使用Jetty或Tomcat等嵌入式Web服务器)与传统的WAR部署相比。这两种方法都涉及单个JVM进程(即无论将多少WAR部署到Tomcat,它都是相同的JVM进程)。
在什么情况下,哪种部署方法优于另一种?
答案 0 :(得分:14)
以下是一些原因:
支持JAR:
支持WAR或EAR:
话虽如此,您始终可以提供2种或3种类型的可执行文件以满足所有需求。任何构建工具都可以轻松实现。
答案 1 :(得分:7)
通过嵌入式网络服务器分发应用程序,只需调用java -jar application.jar
即可进行独立设置和运行。
但是,可能有用户想要控制使用哪个Web服务器或者想要将多个应用程序部署到单个Web服务器中(例如,为了防止端口冲突,特别是端口80和8080)。在那种情况下,"脂肪" jar可能会导致问题或至少导致一些不必要的代码,从而导致更大的内存占用。
恕我直言,这两种情况的最佳方法是提供两种文物:a" fat" jar用于(更简单)独立设置和仅应用程序的战争/耳朵,适用于那些想要在自己的容器中部署应用程序的人。
答案 2 :(得分:4)
我正在考虑用户视角。您可以在.exe或.dmg中包装这个包含自己的jar,只需安装它而无需有关于如何部署的其他说明。此外,由于您仅针对特定服务器进行部署,因此您可以利用该特定服务器