我正在使用spring-boot进行som实验,并且我意识到当我使用嵌入式Tomcat服务器时,生成的WAR大小比使用Jetty甚至是具有相同其他依赖性的Undertow服务器时小。
这怎么可能? ...与tomcat相比,Undertow和Jetty应该是超轻型的。
尺寸为:
Tomcat~18Mb
Undertow~21Mb
Jetty~24Mb
它们中的任何一个对我来说都太大了,因为这是虚拟REST端点。 这些是我的依赖:
<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>
答案 0 :(得分:9)
Spring Boot包括三个示例应用程序,spring-boot-sample-jetty
,spring-boot-sample-tomcat
和spring-boot-sample-undertow
,具有最小且几乎完全相同的功能。使用Spring Boot 1.2.2.RELEASE,归档文件大小为:
spring-boot-sample-jetty
- 12MB spring-boot-sample-tomcat
- 9.8MB spring-boot-sample-undertow
- 9.6MB 正如你所看到的,Tomcat和Undertow几乎相同,Jetty神器大约增加了20%。
尺寸差异的一个值得注意的原因是JSP支持。 Undertow不支持JSP,默认情况下Spring Boot不包含Tomcat的JSP支持。 ~7.7MB的基于Jetty的存档由用于JSP编译的Eclipse Java编译器占用。如果您想使用Jetty并且不使用JSP,则可以排除org.eclipse.jetty:jetty-jsp
依赖项。这会将基于Jetty的工件的大小减小到8.8MB。