Приложение работает нормально, если развернуто как WAR в контейнере Tomcat и настроено с помощью SpringBootServletInitializer.
Но оно не работает при использовании ServletContextInitializer в качестве исполняемого JAR.
Для любых URL, дажестатическое содержимое Я получаю 400 неверных запросов с сообщением об ошибке от одного из фильтров.
Код одинаков как для ServletContextInitializer, так и для SpringBootServletInitializer.
@Configuration
public class WarConfiguration extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(WebApplication.class);
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
// AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext();
WebApplicationContext curCtx = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
// dispatcherContext.register(ServletConfig.class);
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(curCtx));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/*");
ServletRegistration.Dynamic defaultServlet = servletContext.addServlet("default", new DefaultServlet());
defaultServlet.setInitParameter("debug", "1");
defaultServlet.setInitParameter("listings", "true");
defaultServlet.setLoadOnStartup(1);
defaultServlet.addMapping("/content/*");
FilterRegistration.Dynamic logRequestFilter = servletContext.addFilter("logRequestFilter", new LogRequestFilter());
logRequestFilter.addMappingForServletNames(null, true, "dispatcher");
logRequestFilter.addMappingForUrlPatterns(null, true, "/*");
FilterRegistration.Dynamic delegateFilterProxy = servletContext.addFilter("delegateFilterProxy", new DelegatingFilterProxy());
delegateFilterProxy.setInitParameter("targetFilterLifecycle", "true");
delegateFilterProxy.addMappingForUrlPatterns(null, true, "/*");
}
}
Это контекст аутентификации.xml
<bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy">
<constructor-arg>
<list>
<security:filter-chain pattern="/oauth/**"
filters="filter1,filter2" />
<security:filter-chain pattern="/**"
filters="filter1,filter2,filter3,filter4" />
</list>
</constructor-arg>
</bean>
Существует аннотированный класс @Configuration, который