我有一个使用 Spring Boot 2.0.0.RC2 的项目。我需要使用 Tomcat 7.0.82 的传统部署将其部署到客户环境。
我已经成功构建了一场可以通过配置成功部署的战争web.xml
以 Spring 应用程序的典型方式(使用 DispatcherServlet)而不是使用SpringBootServletInitializer
.
我还希望有一种使用嵌入式 Tomcat 容器在本地环境上启动应用程序的快速方法,只需运行应用程序类中的 main 方法即可@SpringBootApplication
注解。如果我使用默认的 Tomcat 版本 (8.5.28),它可以正常工作。但是,我想也在 7.0.82 版本中启动嵌入式容器。这对我来说很重要还有另一个原因——我正在使用 SpringBootTest,如果这些测试在与客户环境完全相同的容器上运行,那就太好了。不幸的是,我无法使用 Spring Boot 父 POM 并覆盖tomcat.version
财产。
我试过了@SpringBootApplication(exclude = ServletWebServerFactoryAutoConfiguration.class)
create TomcatServletWebServerFactory
手动豆
@Bean
public ServletWebServerFactory tomcatServletWebServerFactory() {
return new TomcatServletWebServerFactory();
}
并显式添加 tomcat 7.0.82 依赖项pom.xml
(${tomcat.版本} = 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
error.
请问有什么办法可以满足我的要求吗?
春季启动2:
Tomcat 最低支持版本为 8.5
参考:https://dzone.com/articles/spring-boot-20-new-features-infrastruct-changes https://dzone.com/articles/spring-boot-20-new-features-infrastructure-changes
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)