繁体   English   中英

Using both WebApplicationInitializer and web.xml in spring mvc+spring security+spring session redis web application

[英]Using both WebApplicationInitializer and web.xml in spring mvc+spring security+spring session redis web application

我正在尝试在现有 Z38008DD81C2F4D7985ECFver67Z session 应用程序中实现 Spring redis session。 在 web.xml 中,我们定义了 ContextLoaderListener、DispatcherServlet 和 contextConfigLocation。

包含所需的依赖项并完成建议的代码更改后,我收到以下错误:

原因:java.lang.IllegalStateException:无法初始化上下文,因为已经存在根应用程序上下文 - 检查 web.xml 中是否有多个 ContextLoader定义!"}} *

作为代码更改的一部分,我正在扩展 class “AbstractHttpSessionApplicationInitializer”,(来自 Spring session 核心库),它在内部实现了 WebApplication。 似乎这是试图创建另一个上下文并抛出上述错误。 我们无法避免扩展这个 class,因为它完成了将 redisHttpSession 注册到上下文的工作。

大多数可用的示例都带有 spring 引导。 所以他们不会面临这个问题。

除了完全替换 web.xml 并仅使用 WebApplicationInitializer 之外的任何解决方案?

只是想提供一个更新。 我没有扩展 AbstractHttpSessionApplicationInitializer abtract class,而是采用了不同的方法,通过 XML bean 定义初始化 bean RedisHttpSessionConfiguration。

这种方法奏效了。

遵循以下线程中提到的步骤; 如何配置 Spring 会话以与 xml 中的 Redis 一起使用?

除此之外,我们还需要序列化 cookie;

 @Bean public CookieSerializer cookieSerializer() { DefaultCookieSerializer serializer = new DefaultCookieSerializer(); serializer.setCookieName("SESSIONID"); serializer.setCookiePath("/"); serializer.setDomainNamePattern("^.+?\\.(\\w+\\.[az]+)$"); return serializer; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM