400 неверных запросов при запуске Spring Boot в качестве исполняемого файла WAR - PullRequest
0 голосов
/ 05 октября 2018

Приложение работает нормально, если развернуто как 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, который

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...