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

时间:2016-07-02 16:50:31

标签: spring-mvc tomcat spring-security spring-boot weblogic

我正在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

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

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

不确定补丁是否可用或我们的操作团队是否未应用它,但它仍然对我们有用。 This是我提出的解决方案。