Spring Boot过滤顺序:WebLogic 12c vs Tomcat 8

use*_*747 2 tomcat weblogic spring-mvc spring-security spring-boot

我正在Spring Boot中编写一个Web应用程序,它有一个必须 spring的安全过滤器之后执行的过滤器.

我已经通过java配置配置了我的过滤器链,并将我的自定义过滤器的顺序设置为高于spring security的值.在Tomcat上运行应用程序时,这可以正常工作; 但是,这在WebLogic 12c中不起作用.WebLogic以与Tomcat执行过滤器链相反的方式执行过滤器链(和/或反之亦然).

以前有没有人遇到这个特殊的怪癖?有没有办法使WebLogic像Tomcat一样运行?

我的代码:

final FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter());
registration.setOrder(-99); // spring security's is -100
Run Code Online (Sandbox Code Playgroud)

在Tomcat上,此MyFilter在安全过滤器之后触发.在WebLogic中,MyFilter在安全筛选器之前触发.如果我将值更改setOrder为-101,那么它将适用于WebLogic但不适用于Tomcat.

我想在两个应用服务器上运行应用程序,具体取决于上下文,所以我需要弄清楚如何使这项工作.

And*_*son 6

WebLogic中存在一个错误:"20493506:WLS 12.1.2 - Servlet 3 addFilter以错误的顺序添加过滤器".

一年多前,Spring Boot团队意识到了这一点.不幸的是,Spring Boot无法做到这一点.希望15个月以上的时间足以让Oracle发布可以应用于Weblogic安装的修复程序.