2015-02-26 4 views
0

Я пытаюсь использовать недавно выпущенную библиотеку Spring Session для управления внешними сеансами в Redis. Я использую this guide. Когда я пытаюсь запустить свой сервер, я получаю эту ошибку:Весенняя сессия без дополнительной инициализации контекста?

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present - check whether you have multiple ContextLoader* definitions in your web.xml! 

Я предполагаю, что это потому, что мой веб-приложение уже содержит код для инициализации контекста. Я бы предпочел оставить этот код как есть. Есть ли способ достичь результата этого учебника без необходимости дополнительной инициализации контекста? На самом деле это не кажется необходимым, если я могу добавить компонент springSessionRepositoryFilter и соответствующий объект фильтра сам, но я не знаю, как это делает код Spring Session.

ответ

0

Изменения, которые необходимо внести в существующий инициализатор, должны быть минимальными. Во-первых, он, вероятно, в настоящее время реализует WebApplicationInitializer, и это необходимо изменить, чтобы расширить AbstractHttpSessionApplicationInitializer. Во-вторых, в вашем методе onStartup добавьте super.onStartup(servletContext) после существующего кода инициализации.

public class Initializer extends AbstractHttpSessionApplicationInitializer 
{ 
    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException 
    { 
     // existing code 

     super.onStartup(servletContext); 
    } 
} 

Я знаю, что вы не хотели менять свой инициализатор, но это очень минимальный подход, чтобы заставить его работать.

1

С применением пружинной загрузки он не нуждается в использовании классов инициализатора в качестве исходной пружины: http://docs.spring.io/spring-session/docs/current-SNAPSHOT/reference/html5/guides/boot.html.

Также с помощью пружины безопасности вы можете проверить ниже яровой урока: https://github.com/spring-projects/spring-session/tree/master/samples/javaconfig/security/src/main/java/sample

import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; 


public class Initializer extends AbstractHttpSessionApplicationInitializer { 

} 

Если вы хотите настроить с мавена вместо Gradle вы можете проверить свой ответ в комментарии. Надеюсь, это поможет!

+0

Если вы хотите, вы можете проверить свой ответ, связанный с настройкой Redis с сеансом Spring http://stackoverflow.com/questions/41777267/how-can-i-get-currently-authenticated-user-principal-with-spring- безопасности и-ре/42097931 # 42097931 –

Смежные вопросы