2

我是Spring MVC的新手,现在我已经开始讨论如何将Web项目部署为.jar的教程。我的IDE是Spring Tool Suite。我一直使用.war + Apache Tomcat。作为罐子的Spring MVC项目

有人可以从实际的角度阐述一下为什么要用.jar代替.war?任何需要注意的问题?

编辑:其他的答案也欢迎

回答

2

春季启动使用脂肪JAR封装,其中是嵌入Servlet容器与所有依赖这个单一的JAR。

如果您使用的是Maven,它使用spring-boot-maven-plugin来打包该项目。

这种方法的实际用法很简单。能够通过具有外部化属性的命令行轻松运行基于Srvlet的Spring应用程序。这样的配置可以实现强大的协调可能性,这在现代企业中通常用于所谓的微服务或SOA架构。

有一群人(包括我自己)认为将不相关的应用程序的各种WAR文件部署到单个Servlet运行时并不是一个好主意。

因此,胖JAR对于每个应用程序部署的独立Servlet运行时非常方便。

+0

我是否会用.jar获得100%的功能,因为我将使用Tomcat + .war?如果我使用.jar版本,我甚至需要Tomcat吗? – Gero

+0

是的,使用嵌入式Tomcat的Spring Boot就好像您将在独立的Tomcat上部署单一战争一样。但是如果你需要配置Tomcat,你需要通过Spring Boot属性来完成。 – luboskrnac

+0

能在同一台机器上托管.jar和Tomcat + .war文件吗?任何好的网站阅读有关所有特定的东西? – Gero

1

关于.jar和Tomcat + .war在同一台机器上,这是可能的,我用这个。这可能不是很酷,但是在弹簧启动之前,我有一个运行在tomcat服务器上的.war应用程序。现在我的新应用程序是弹簧启动应用程序,我们正在将我们的架构迁移到SOA概念,但我们无法用移动车更换轮胎。主要应用程序中,WAR运行在tomcat服务器上,其他(.jar)是独立的(嵌入式tomcat),每个运行在不同的端口上。这是目前最可行的解决方案。

+0

你能否解释一下你如何为每个.jar分配一个不同的端口? – Gero

+0

端口问题在您的应用程序中配置。在我的war应用程序中,这个配置位于我的pom.xml中。我使用tomcat7-maven-plugin来配置细节,比如端口。在spring-boot应用程序中,有关端口的配置是在.properties文件中进行的。该行是server.port = 8081.但正如我告诉你的,这不是理想的架构方案。您可以使用docker在您的服务器的同一端口运行所有应用程序服务(请参阅!)。我正在使用不同的端口来促进生产中的开发和部署,但我打算很快转移到docker。 – Digao