2014-09-18 3 views
11

Я хочу настроить свой контекст сервлета, такие как гоприятного пользовательского ключа JSessionID (см Changing cookie JSESSIONID name)Spring загрузки настроить пользовательские JSESSIONID для встроенного сервера

Я считаю, что я могу использовать SpringBootServletInitializer при запуске файла WAR, манипулируя servletContext в onStartup(). Однако, когда я запускаю на встроенном сервере приложений, используя new SpringApplicationBuilder().run(), я не знаю лучшего места для манипулирования контекстом сервлета.

+1

Я довольно подозрительно ваших мотивов. Если вы измените имя файла cookie, вы не сможете использовать общие алгоритмы балансировки нагрузки, например. Я не могу понять, почему это необходимо. –

ответ

16

Объявите ServletContextInitializer боб в конфигурации вашего приложения:

@Bean 
public ServletContextInitializer servletContextInitializer() { 
    return new ServletContextInitializer() { 

     @Override 
     public void onStartup(ServletContext servletContext) throws ServletException { 
      servletContext.getSessionCookieConfig().setName("yourCookieName"); 
     } 
    }; 

} 

С другой стороны, сам ваш класс приложения может реализовать ServletContextInitializer:

@Configuration 
@EnableAutoConfiguration 
@ComponentScan 
public class Application implements ServletContextInitializer { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Application.class, args); 
    } 

    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException { 
     servletContext.getSessionCookieConfig().setName("yourCookieName"); 
    } 

} 
+0

Отличная работа Mr.Wilkinson искали это в течение некоторого времени! Продолжайте хорошую работу. –

1

с весенней сессии, если вы хотите изменить имя куки, вы можете сделать это

@Bean 
public DefaultCookieSerializer defaultCookieSerializer(){ 
    DefaultCookieSerializer defaultCookieSerializer = new DefaultCookieSerializer(); 
    defaultCookieSerializer.setCookieName("mySessionId"); 
    return defaultCookieSerializer; 
} 

я нахожу это весной источник сессии

весна-сессия-1.2.1.RELEASE-источников. баночка! /org/springframework/session/config/annotation/web/http/SpringHttpSessionConfiguration.java

@Autowired(required = false) 
public void setCookieSerializer(CookieSerializer cookieSerializer) { 
    this.defaultHttpSessionStrategy.setCookieSerializer(cookieSerializer); 
} 
Смежные вопросы