Spring 引导过滤器顺序:WebLogic 12c 与 Tomcat 8
Spring Boot filter order: WebLogic 12c vs Tomcat 8
我正在 Spring Boot 中编写一个 Web 应用程序,它有一个必须在 spring 的安全过滤器之后执行的过滤器。
我已经通过 java 配置配置了我的过滤器链,并将我的自定义过滤器的顺序设置为高于 spring 安全顺序的值。当 运行 在 Tomcat 上运行应用程序时,这会按预期工作;但是,这在 WebLogic 12c 中不起作用。 WebLogic 以与 Tomcat 执行它的方式相反的方式执行过滤器链(and/or 反之亦然)。
有没有人遇到过这种怪癖?有没有办法让 WebLogic 的行为像 Tomcat 那样?
我的代码:
final FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter());
registration.setOrder(-99); // spring security's is -100
在 Tomcat,此 MyFilter 在安全过滤器之后触发。在 WebLogic 中,MyFilter 在安全过滤器之前触发。例如,如果我将 setOrder
的值更改为 -101,那么它将适用于 WebLogic 但不适用于 Tomcat.
我想 运行 两个应用程序服务器上的应用程序,具体取决于上下文,所以我需要弄清楚如何让它工作。
WebLogic 中存在错误:“20493506:WLS 12.1.2 - Servlet 3 addFilter 添加过滤器的顺序错误”。
Spring 引导团队 made aware of this 一年多以前。不幸的是,Spring Boot 对此无能为力。希望 15 个月以上的时间足以让 Oracle 发布一个可以应用到 Weblogic 安装的修复程序。
不确定补丁是否可用或我们的运营团队尚未应用它,但它对我们来说仍然无法使用。 This 是我想出的解决方案。
我正在 Spring Boot 中编写一个 Web 应用程序,它有一个必须在 spring 的安全过滤器之后执行的过滤器。
我已经通过 java 配置配置了我的过滤器链,并将我的自定义过滤器的顺序设置为高于 spring 安全顺序的值。当 运行 在 Tomcat 上运行应用程序时,这会按预期工作;但是,这在 WebLogic 12c 中不起作用。 WebLogic 以与 Tomcat 执行它的方式相反的方式执行过滤器链(and/or 反之亦然)。
有没有人遇到过这种怪癖?有没有办法让 WebLogic 的行为像 Tomcat 那样?
我的代码:
final FilterRegistrationBean registration = new FilterRegistrationBean(new MyFilter());
registration.setOrder(-99); // spring security's is -100
在 Tomcat,此 MyFilter 在安全过滤器之后触发。在 WebLogic 中,MyFilter 在安全过滤器之前触发。例如,如果我将 setOrder
的值更改为 -101,那么它将适用于 WebLogic 但不适用于 Tomcat.
我想 运行 两个应用程序服务器上的应用程序,具体取决于上下文,所以我需要弄清楚如何让它工作。
WebLogic 中存在错误:“20493506:WLS 12.1.2 - Servlet 3 addFilter 添加过滤器的顺序错误”。
Spring 引导团队 made aware of this 一年多以前。不幸的是,Spring Boot 对此无能为力。希望 15 个月以上的时间足以让 Oracle 发布一个可以应用到 Weblogic 安装的修复程序。
不确定补丁是否可用或我们的运营团队尚未应用它,但它对我们来说仍然无法使用。 This 是我想出的解决方案。