2014-09-12 3 views
1

J'ai déployé ma Spring Boot Web application on WildFly 8.1, mais maintenant j'ai des problèmes.Spring Spring sur WildFly (ou Undertow): les ordres du filtre de servlet sont inversés

Lorsque l'application a été déployée, FilterRegistrationBeans registre Filtres de servlet. Je sais FilterRegistrationBean s sont oredered par AnnotationAwareOrderComparator, et ces filtres sont enregistrés par cet ordre. Mais quand j'accède à mon application, Undertow appelle les filtres par ordre inverse.

Par exemple, si les filtres registre Spring Boot comme ça:

  • errorPageFilter
  • metricFilter (du printemps actionneur Boot)
  • characterEncodingFilter
  • hiddenHttpMethodFilter
  • springSecurityFilterChain (du printemps Sécurité

Undertow appeler ces filtres comme ça:

  • springSecurityFilterChain
  • hiddenHttpMethodFilter
  • characterEncodingFilter
  • metricFilter
  • errorPageFilter

Comment puis-je spécifier ces filtres à commander correctement? L'ordre de certains filtres (comme org.springframework.boot.context.web.ErrorPageFilter) a été codé en dur dans la source, je ne peux pas le spécifier.

+0

Avez-vous essayé sur Tomcat ou tout autre serveur d'application Java EE? Vous vous demandez si c'est un problème de démarrage, ou WildFly? –

+0

J'essaie sur WildFly et Embedded Tomcat. Sur Tomcat, l'ordre des filtres est collecté (c'est ce à quoi je m'attendais), mais sur WildFly, l'ordre est celui décrit ci-dessus. – riue

+0

Vérifie au sein de l'équipe et reviendra vers vous. –

Répondre

0

Cela semble être un bogue Undertow qui se produit lorsque matchAfter est false dans FilterRegistrationImpl # addMappingForUrlPatterns, au lieu d'insérer le filtre avant tous les filtres déclarés, il l'insère avant tous les filtres.

+0

J'ai corrigé ceci en amont https://issues.jboss.org/browse/UNDERTOW-309 –

+0

Merci pour votre réparation! – riue

Questions connexes