Ошибка сервлета при запуске весенней загрузки приложения - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь запустить веб-приложение Spring Boot.

Класс приложения выглядит следующим образом:

@SpringBootApplication
public class MyWebApplication extends SpringBootServletInitializer {

  public static void main(String[] args) {
    System.setProperty("spring.profiles.active", "dev");
    SpringApplication.run(MyWebApplication.class, args);
  }


  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(MyWebApplication.class);
  }

  @Configuration
  @ConditionalOnWebApplication
  public static class WebConfiguration {

     @Bean
     public ServletListenerRegistrationBean<ServletContextListener> registerClientCookieConfigListener () {
        ServletListenerRegistrationBean<ServletContextListener> srb =
                new ServletListenerRegistrationBean<>();
        srb.setListener(new MyCookieConfigListener());
        return srb;
     }

    // ... other servlets and filters registered by ServletRegistrationBean or FilterRegistrationBean

  }
}

и внутри MyCookieConfigListener:

@WebListener
public class MyCookieConfigListener implements ServletContextListener {


  @Override
  public void contextInitialized(ServletContextEvent sce) {
    final SessionCookieConfig cookieConfig = sce.getServletContext().getSessionCookieConfig();
    cookieConfig.setHttpOnly(true);
    cookieConfig.setMaxAge(-1);
  }

  @Override
  public void contextDestroyed(ServletContextEvent sce) {

  }
 }

Также MyCookieListener определено в web.xml

При запуске приложения:

java.lang.UnsupportedOperationException: Section 4.4 of the Servlet 3.0 specification does not permit this method to be called from a ServletContextListener that was not defined in web.xml, a web-fragment.xml file nor annotated with @WebListener
    at org.apache.catalina.core.StandardContext$NoPluggabilityServletContext.getSessionCookieConfig(StandardContext.java:6665)
    at MyCookieConfigListener.contextInitialized(MyCookieConfigListener.java:20)

Это происходит в этой строке:

     final SessionCookieConfig scc=sce.getServletContext().getSessionCookieConfig();

Слушатель объявлен в web.xml, он также аннотирован как @Listener. Кто-нибудь сталкивался с проблемой и знает решение?

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