SpringBoot中,嵌入环境中的Tomcat忽略ServletContainerInitializer

Stella981
• 阅读 641

按照@philwebb说法,嵌入式环境下,SpringBoot有意忽略javax.servlet.ServletContainerInitializer,原因:

The search algorithm used by the containers was problematic. It also causes problems when you want to develop an executable WAR as you often want a javax.servlet.ServletContainerInitializer for the WAR that is not executed when you run java -jar.

解决方案:

1. 注册org.springframework.boot.context.embedded.ServletContextInitializer类型的Bean代替ServletContainerInitializer。

2. 直接向容器注册Servlet和Filter。

3. 向容器注册ServletRegistrationBean和FilterRegistrationBean。

参考:

[1]https://github.com/spring-projects/spring-boot/issues/321

[2]https://github.com/spring-projects/spring-boot/issues/522

点赞
收藏
评论区
推荐文章
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
springboot部署到tomcat
把springboot项目按照平常的web项目一样发布到tomcat容器下多点经验:1.保证运行环境的jdk和开发环境一致,不然class文件无法被编译2.保证tomcat和java的版本匹配,不然tomcat无法启动3.集群一般会进行ip和域名的映射,如果tomcat服务器不在集群内,需要在所在服务器进行
Easter79 Easter79
3年前
SpringBoot中,嵌入环境中的Tomcat忽略ServletContainerInitializer
按照@philwebb说法,嵌入式环境下,SpringBoot有意忽略javax.servlet.ServletContainerInitializer,原因:Thesearchalgorithmusedbythecontainerswasproblematic.Italsocausesproblemswhenyouwa
Stella981 Stella981
3年前
Spring Boot 实践
\一、SpringBoot重要特性1.独立的Spring应用程序,嵌入式Tomcat/Jetty容器,无需部署War包2.尽可能使用自动化配置,SpringAutoConfiguration3.提供一批'starter'POM简化Maven及Gradle配置4.提供一系列可以用到生产环境的应用度量、健康检查等特性(Act
Easter79 Easter79
3年前
SpringBoot内嵌Tomcat开启APR模式(运行环境为Centos7)
网上查到的一些springboot内嵌的tomcat开启apr的文章,好像使用的springboot版本较老,在SpringBoot2.0.4.RELEASE中已经行不通了。自己整理了一下,供参考。运行环境:Centos7,JDK1.81.pom.xml代码如下:<projectxmlns"http://maven.apache
Easter79 Easter79
3年前
SpringBoot打成war包,部署到Tomcat服务器
前言 SpringBoot默认达成jar包,默认使用内置的Tomcat。但考虑到项目需要打成war包部署到外部的Tomcat服务器中。把SpringBoot项目按照平常的web项目一样发布到tomcat容器下。1、修改pom.xml文件将默认的jar(默认创建项目的时候没有packaging)方式改为war。
Stella981 Stella981
3年前
SpringBoot打成war包,部署到Tomcat服务器
前言 SpringBoot默认达成jar包,默认使用内置的Tomcat。但考虑到项目需要打成war包部署到外部的Tomcat服务器中。把SpringBoot项目按照平常的web项目一样发布到tomcat容器下。1、修改pom.xml文件将默认的jar(默认创建项目的时候没有packaging)方式改为war。
Wesley13 Wesley13
3年前
.gitignore 规则写法
1\.在已忽略文件夹中不忽略指定文件夹/node_modules/!/node_modules/layer/2.在已忽略文件夹中不忽略指定文件/node_modules/!/node_modules/laye
Stella981 Stella981
3年前
SpringBoot内嵌Tomcat开启APR模式(运行环境为Centos7)
网上查到的一些springboot内嵌的tomcat开启apr的文章,好像使用的springboot版本较老,在SpringBoot2.0.4.RELEASE中已经行不通了。自己整理了一下,供参考。运行环境:Centos7,JDK1.81.pom.xml代码如下:<projectxmlns"http://maven.apache