当前位置: 首页 > 知识库问答 >
问题:

不同嵌入式服务器的Spring开机WAR大小

仉高昂
2023-03-14

我正在用spring-boot做一些实验,我意识到当我使用嵌入式Tomcat服务器时,产生的WAR大小比我使用Jetty甚至Undertow服务器时的大小要小。

这怎么可能呢?...与tomcat相比,Undertow和Jetty应该是超轻的。

尺寸为:

雄猫 ~18Mb

欠拖 ~21Mb

码头 ~24Mb

其中任何一个对我来说都太大了,因为这是虚拟RESTendpoint。这些是我的依赖关系:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jersey</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- <dependency> -->
        <!-- <groupId>org.springframework.boot</groupId> -->
        <!-- <artifactId>spring-boot-starter-tomcat</artifactId> -->
        <!-- </dependency> -->
        <!-- <dependency> -->
        <!-- <groupId>org.springframework.boot</groupId> -->
        <!-- <artifactId>spring-boot-starter-undertow</artifactId> -->
        <!-- </dependency> -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
<!--        <dependency> -->
<!--            <groupId>org.springframework.boot</groupId> -->
<!--            <artifactId>spring-boot-starter-test</artifactId> -->
<!--            <scope>test</scope> -->
<!--        </dependency> -->
    </dependencies>

共有1个答案

谢翰学
2023-03-14

Spring Boot包括三个示例应用程序,sping-引导-sample-jettysping-引导-sample-tomcatsping-引导-sample-undertow,具有最小且几乎相同的功能。使用Spring Boot1.2.2.RELEASE,存档大小为:

    < Li > < code > spring-boot-sample-jetty -12MB < Li > < code > spring-boot-sample-Tomcat -9.8 MB < Li > < code > spring-boot-sample-under flow -9.6 MB

如您所见,Tomcat和Undertow几乎相同,Jetty神器大了~20%。

大小差异的一个显著原因是JSP支持。Undertow不支持JSP,Spring Boot默认不包括Tomcat的JSP支持~用于JSP编译的EclipseJava编译器占用了1.7MB的基于Jetty的归档文件。如果您想使用Jetty而不使用JSP,可以排除<code>org.eclipse。jetty:jettyjsp依赖关系。这将基于Jetty的工件的大小减小到8.8MB。

 类似资料:
  • 运行Spring Boot应用程序时,嵌入式tomcat服务器无法启动。我刚刚在pom.xml中添加了所需的依赖项,并创建了一个简单的java POJO类。应用程序属性已经按照oracle数据库所需的jdbc配置以及Hibernate方言信息进行了设置。 执行mvn spring-boot:run时的控制台日志

  • 每个Spring Boot Web应用程序都包含一个嵌入式Web服务器。 此功能会导致许多操作方法问题,包括如何更改嵌入式服务器以及如何配置嵌入式服务器。 本节回答了这些问题。 9.3.1 使用其他Web服务器 许多Spring Boot启动器都包含默认的嵌入式容器。 对于servlet堆栈应用程序,spring-boot-starter-web包括tomcat,包括spring-boot-sta

  • 我正在开发一个cron,我正在使用一个web客户端向一个rest API发送一个post请求。我不想让嵌入式服务器保持开机状态,因为cron需要在几秒钟内完成其任务。但当我不使用服务器时: 更新:我试过了 但是获取由:java.lang.IllegalStateException:org.springframework.boot.web.reactive.context.AnnotationCon

  • 我正在尝试加载一个“WAR”文件到Spring Boot的嵌入式tomcat服务器。为此,我找到了这样的答案:Spring Boot:如何向嵌入式Tomcat添加另一个WAR文件? 但是在我这样做之后,我发现在这个问题上已经问过的错误:用嵌入的Tomcat部署现有的war,但是没有一个满意的答案。 注意:我知道这是一个重复的问题(我把链接),但当时没有足够的声誉添加一个评论,或能力与作者私下联系,

  • 我正在使用下面的代码自定义嵌入式ActiveMQ Artemis服务器。

  • 我试图加载一个"war"文件到Spring Boot的嵌入式tomcat服务器。为此,我找到了这个答案:Spring Boot:如何向嵌入式tomcat添加另一个WAR文件? 但在我这么做之后,我发现在这个问题上已经出现了同样的错误:使用嵌入式Tomcat部署现有的war,但没有令人满意的答案。 注意:我知道这可以被看作是一个重复的问题(我放了链接),但当时没有足够的声誉添加评论,或者没有能力私下