2014-09-12 5 views
1

Я развернул свой Spring Boot Web application on WildFly 8.1, но теперь у меня есть проблемы.Весенняя загрузка на WildFly (или Undertow): заказы сервлет-фильтра отменены

Когда приложение было развернуто, FilterRegistrationBeans зарегистрировать сервлет-фильтры. Я знаю, что FilterRegistrationBean s находятся под управлением AnnotationAwareOrderComparator, и эти фильтры регистрируются в этом порядке. Но когда я обращаюсь к своему приложению, Undertow называет фильтры обратным порядком.

Например, если Spring Загрузочный регистрировать фильтры так:

  • errorPageFilter
  • metricFilter (с весны загрузки привода)
  • characterEncodingFilter
  • hiddenHttpMethodFilter
  • springSecurityFilterChain (от Spring Security)

Undertow называют эти фильтры так:

  • springSecurityFilterChain
  • hiddenHttpMethodFilter
  • characterEncodingFilter
  • metricFilter
  • errorPageFilter

Как я могу правильно указать эти фильтры? Некоторые настройки фильтра (например, org.springframework.boot.context.web.ErrorPageFilter) были жестко закодированы в источнике, я не могу это указать.

+0

Вы пробовали это на Tomcat или на любом другом сервере приложений Java EE? Удивление, если это проблема с загрузкой, или WildFly? –

+0

Я пытаюсь использовать WildFly и Embedded Tomcat. На Tomcat порядок фильтров собирается (это я ожидал), но на WildFly порядок описан выше. – riue

+0

Проверка внутри команды и возвращение к вам. –

ответ

0

Это, кажется, ошибка Undertow, которая возникает, когда matchAfter является false в FilterRegistrationImpl # addMappingForUrlPatterns, вместо того, чтобы вставлять фильтр перед всеми объявленными фильтрами, он вставляет его перед всеми фильтрами.

+0

Я исправил это вверх по потоку https://issues.jboss.org/browse/UNDERTOW-309 –

+0

Благодарим вас за исправление! – riue