同じブラウザで複数のセッションを許可するためにspring-sessionに問題があります。私はセッションとCookieHttpSessionStrategyを格納するためにMapSessionRepositoryを使用しています。この構成では、すべてうまく動作します。null SpringセッションでHeaderHttpSessionStrategyを持つHttpSessionManager
CookieHttpSessionStrategyをHeaderHttpSessionStrategyに変更するよう依頼されました。リクエストからHttpSessionManagerを取得しようとすると、NullPointerExceptionが発生します。
これは、(作業I'ts)私の以前の設定です:
@Configuration
@ComponentScan(basePackages = { "com.company.name" }, excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = { "com.company.name.web*" }))
@EnableScheduling
@EnableAspectJAutoProxy
@EnableCaching
@EnableSpringHttpSession
public class Config {
....
....
@Bean
public MapSessionRepository sessionRepository() {
return new MapSessionRepository();
}
@Bean
public HttpSessionStrategy httpSessionStrategy() {
return new CookieHttpSessionStrategy();
}
}
これは私の新しい configです:
@Configuration
@ComponentScan(basePackages = { "com.company.name" }, excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = { "com.company.name.web*" }))
@EnableScheduling
@EnableAspectJAutoProxy
@EnableCaching
@EnableSpringHttpSession
public class Config {
....
....
@Bean
public MapSessionRepository sessionRepository() {
return new MapSessionRepository();
}
@Bean
public HttpSessionStrategy httpSessionStrategy() {
return new HeaderHttpSessionStrategy();
}
}
私はSessionManagerのオブジェクトを取得する:
//Se obtiene el manager de sesiones de spring session
HttpSessionManager sessionManager = (HttpSessionManager) httpRequest.getAttribute(HttpSessionManager.class.getName());
ヘッダー戦略を使用すると、org.springframework.session.web.http.HttpSeはありません。要求に応じてssionManager属性。私は何か間違っているのですか?私はHeaderHttpSessionStrategyオブジェクトを返すか、新しいカスタム戦略を実装するだけで戦略を変えることができると考えました。
ありがとうございました!
なぜあなたは 'HttpSessionManager'をそのように取得していますか?必要な場合は、それを挿入するだけです... –