Spring boot WildFly上的Spring Boot(或Undertow):Servlet过滤器';s的命令被颠倒了

Spring boot WildFly上的Spring Boot(或Undertow):Servlet过滤器';s的命令被颠倒了,spring-boot,wildfly,undertow,Spring Boot,Wildfly,Undertow,我在WildFly 8.1上部署了我的Spring Boot Web应用程序,但现在遇到了一些问题 部署应用程序时,FilterRegistrationBeansRegisterServlet过滤器。我知道,FilterRegistrationBeans是由AnnotationAwareOrderComparator排序的,并且这些过滤器是按该顺序注册的。但当我访问我的应用程序时,Undertow调用按相反顺序过滤 例如,如果Spring引导寄存器过滤如下: 错误页面过滤器 metricFil

我在WildFly 8.1上部署了我的
Spring Boot Web应用程序,但现在遇到了一些问题

部署应用程序时,
FilterRegistrationBeans
RegisterServlet过滤器。我知道,
FilterRegistrationBean
s是由
AnnotationAwareOrderComparator
排序的,并且这些过滤器是按该顺序注册的。但当我访问我的应用程序时,Undertow调用按相反顺序过滤

例如,如果Spring引导寄存器过滤如下:

  • 错误页面过滤器
  • metricFilter(来自弹簧防尘套执行器)
  • 字符编码滤波器
  • hiddenHttpMethodFilter
  • springSecurityFilterChain(来自Spring Security)
Undertow这样称呼这些过滤器:

  • springSecurityFilterChain
  • hiddenHttpMethodFilter
  • 字符编码滤波器
  • 计量过滤器
  • 错误页面过滤器

如何正确指定这些过滤器的顺序?一些过滤器的顺序(如
org.springframework.boot.context.web.ErrorPageFilter
)是在源代码中硬编码的,我无法指定。

这似乎是一个底层错误,当FilterRegistrationImpl#addMappingForUrlPatterns中matchAfter为false时会发生,它不是在所有声明的过滤器之前插入过滤器,而是在所有过滤器之前插入过滤器。

您是否在Tomcat或任何其他Java EE应用服务器上尝试过这种方法?想知道这是引导问题还是WildFly?我正在尝试WildFly和嵌入式Tomcat。在Tomcat上,过滤器的顺序是collect(这是我期望的),但在WildFly上,过滤器的顺序是上面描述的。在团队内部检查,然后会返回给您。现在这个问题已经得到了回答!谢谢你的修理!