我有一个使用Spring Boot 2.0.0.RC2的项目。我需要使用Tomcat 7.0.82的传统部署将其部署到客户环境。
通过以典型方式为Spring应用程序配置web.xml
(使用DispatcherServlet)而不是使用SpringBootServletInitializer
,我设法构建了可以成功部署的战争。
我还想通过简单地在带有@SpringBootApplication
注释的应用程序类中运行main方法,使用嵌入式Tomcat容器快速启动应用程序在本地环境中。如果我使用默认的Tomcat版本(8.5.28),它可以正常工作。但是,我想在7.0.82版本中启动嵌入式容器。这对我来说很重要,原因是另一个原因 - 我正在使用SpringBootTest,如果这些测试运行在与客户环境完全相同的容器上,那就太好了。不幸的是,我无法使用Spring Boot父POM并覆盖tomcat.version
属性。
我已经尝试@SpringBootApplication(exclude = ServletWebServerFactoryAutoConfiguration.class)
手动创建TomcatServletWebServerFactory
bean
@Bean
public ServletWebServerFactory tomcatServletWebServerFactory() {
return new TomcatServletWebServerFactory();
}
并在pom.xml
中显式添加tomcat 7.0.82依赖项($ {tomcat.version} = 7.0.82):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-annotations-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-annotations-api</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-util</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>${tomcat.version}</version>
</dependency>
但我仍然收到java.lang.NoClassDefFoundError: org/apache/tomcat/util/scan/StandardJarScanFilter
错误。
请问您是否有办法满足我的要求?
答案 0 :(得分:0)
春季靴2: Tomcat的最低支持版本是8.5
参考:https://dzone.com/articles/spring-boot-20-new-features-infrastructure-changes