Я пытаюсь запустить веб-приложение 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
.
Кто-нибудь сталкивался с проблемой и знает решение?