最近在开发项目接口,基于SpringBoot 2.6.8,最终部署到外置Tomcat 8.5.85 下,开发过程中写了一个CookieFilter,实现javax.servlet.Filter接口,代码编译期正常。部署到外置Tomcat 8.5.85 下,在控制台上报错:
16-Jan-2023 16:11:07.756 严重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常[cookieFilter]java.lang.AbstractMethodErrorat org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:109)at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4604)...省略其他输出...
日志截图如下:

除了初始化错误还有销毁错误,错误类型与以下的错误类型一致:
16-Jan-2023 16:11:07.876 严重 [localhost-startStop-1] org.apache.catalina.core.ApplicationFilterConfig.release 失败的销毁过滤器类型为[xx.CookieFilter]名称为[CookieFilter]java.lang.AbstractMethodErrorat org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFilterConfig.java:312)at org.apache.catalina.core.StandardContext.filterStop(StandardContext.java:4638)...省略其他输出...
日志截图如下:

我的代码差不多长这样:
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class CookieFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {//做一些处理...filterChain.doFilter(request, response);}}
javax.servlet:javax.servlet-api依赖包,这个包里定义的Filter接口的init()与destroy()是有默认实现的,代码如图:
这几种方案中对于研发层面最简单避免这个问题的就是方案一,这里的解决方案是抛砖引玉,欢迎大家评论给出更优解。我是Hellxz,下次博客见。
上一篇:全栈性能测试详解