【问题标题】:Spring MVC project as jarSpring MVC 项目作为 jar
【发布时间】:2015-09-19 15:09:51
【问题描述】:

我是 Spring MVC 的新手,现在我看到了一些教程,这些教程解释了如何将你的 Web 项目部署为 .jar。我的 IDE 是 Spring Tool Suite。我一直使用 .war + Apache Tomcat。

有人可以从实际的角度详细说明为什么使用 .jar 而不是 .war 吗?有什么需要注意的问题吗?

编辑:也欢迎其他答案

【问题讨论】:

    标签: spring spring-mvc spring-boot spring-tool-suite spring-boot-maven-plugin


    【解决方案1】:

    Spring Boot 使用胖 JAR 封装,其中将具有所有依赖项的 Servlet 容器嵌入到单个 JAR 中。

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

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

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

    因此,胖 JAR 可以方便地为每个应用程序部署单独的 Servlet 运行时。

    【讨论】:

    • 我能否像使用 Tomcat + .war 一样获得 .jar 的 100% 功能?如果我使用 .jar 版本,是否还需要 Tomcat?
    • 是的,带有嵌入式 Tomcat 的 Spring Boot 就像您将在独立 Tomcat 上部署单一战争一样。但是如果你需要配置 Tomcat,你需要通过 Spring Boot 属性来完成。
    • 可以在同一台机器上托管 .jar 和 Tomcat + .war 文件吗?有什么好的网站可以阅读所有这些特定的东西吗?
    • 当然可以。不知道任何具体的资源。
    • "Do I even need to Tomcat" 严格来说不,tomcat是你jar的一部分,你不需要使用tomcat,你也可以选择使用seomthing,例如jetty。但是,要使应用程序独立且可运行,需要在 jar 中“包含”某种服务器。如果你真的在问你是否需要在你的机器上安装一个“单独的”tomcat,答案是“不”。 jar 只需要运行一件事:JVM。
    【解决方案2】:

    关于在同一台机器上拥有 .jar 和 Tomcat + .war 是可能的,我使用它。这可能并不酷,但在 Spring Boot 兴起之前,我在 tomcat 服务器中运行了一个 .war 应用程序。现在我的新应用程序是 spring boot 应用程序,我们正在将我们的架构迁移到 SOA 概念,但是我们不能随着移动的汽车更换轮胎。主应用程序,WAR 在 tomcat 服务器中运行,其他 (.jar) 是自包含的(嵌入式 tomcat),每个都在不同的端口中运行。这是目前我们可用的最可行的解决方案。

    【讨论】:

    • 您能解释一下您是如何为每个 .jar 分配不同的端口的吗?
    • 在您的应用程序中配置了端口问题。在我的战争应用程序中,此配置位于我的 pom.xml 中。我使用 tomcat7-maven-plugin 来配置细节,比如端口。在 spring-boot 应用程序中,有关端口的配置是在 .properties 文件中进行的。该行是 server.port= 8081。但正如我告诉你的,这不是理想的架构方案。您可以使用 docker 在服务器的同一端口中运行所有应用程序服务(看看!)。我正在使用不同的端口来促进生产中的开发和部署,但我打算很快迁移到 docker。
    猜你喜欢
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多