bill447 2022-08-05 17:27 采纳率: 100%
浏览 152
已结题

Spring MVC 使用 Spring Session 实现 Session 共享-Redis报错 :redisMessageListenerContainer

希望实现Spring MVC 使用 Spring Session 实现 Session 共享-Redis
我项目的环境是jdk7+spring4.3.16.RELEASE

pom.xml配置

<dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>2.1.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
            <version>1.3.5.RELEASE</version>
        </dependency>

然后按照网上说的配置完xml后,启动报错

img

跟网上不一样的就是我这使用了jedis切片连接池,不知道是否有关系

application.xml配置

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="200" />
        <property name="testOnBorrow" value="false"/>
        <property name="testOnReturn" value="false"/>
    </bean>

    <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool"  scope="singleton">
        <constructor-arg index="0" ref="jedisPoolConfig" />
        <constructor-arg index="1">
            <list>
                <bean class="redis.clients.jedis.JedisShardInfo">
                    <constructor-arg name="host" value="${redis.ip}" />
                    <constructor-arg name="port" value="${redis.port}" />
                    <property name="password" value="${redis.pass}"/>
                    <constructor-arg name="timeout" value="2000" />
                    <constructor-arg name="weight" value="1" />
                </bean>
            </list>
        </constructor-arg>
    </bean>
    <bean id="redisUtil" class="cn.o.cache.RedisClientTemplate"/>

    <bean id="redisHttpSessionConfiguration"
          class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>

web.xml配置

 <filter>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


求打救

  • 写回答

3条回答 默认 最新

  • 闻志流e师兄 2022-08-05 17:57
    关注
    
    @Bean
        public RedisMessageListenerContainer redisMessageListenerContainer(
                RedisConnectionFactory connectionFactory,
                RedisOperationsSessionRepository messageListener) {
    
            RedisMessageListenerContainer container = new RedisMessageListenerContainer();
            container.setConnectionFactory(connectionFactory);
            if (this.redisTaskExecutor != null) {
                container.setTaskExecutor(this.redisTaskExecutor);
            }
            if (this.redisSubscriptionExecutor != null) {
                container.setSubscriptionExecutor(this.redisSubscriptionExecutor);
            }
            container.addMessageListener(messageListener,
                    Arrays.asList(new PatternTopic("__keyevent@*:del"),
                            new PatternTopic("__keyevent@*:expired")));
            container.addMessageListener(messageListener, Arrays.asList(new PatternTopic(
                    messageListener.getSessionCreatedChannelPrefix() + "*")));
            return container;
        }
    

    这是RedisHttpSessionConfiguration中关于redisMessageListenerContainer这个bean的信息,需要两个参数(bean注入),你这缺少RedisConnectionFactory这个bean的配置

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月24日
  • 已采纳回答 8月16日
  • 创建了问题 8月5日

悬赏问题

  • ¥15 如何构建全国统一的物流管理平台?
  • ¥100 ijkplayer使用AndroidStudio/CMake编译,如何支持 rtsp 直播流?
  • ¥20 和学习数据的传参方式,选择正确的传参方式有关
  • ¥15 这是网络安全里面的poem code
  • ¥15 用js遍历数据并对非空元素添加css样式
  • ¥15 使用autodl云训练,希望有直接运行的代码(关键词-数据集)
  • ¥50 python写segy数据出错
  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥30 3D多模态医疗数据集-视觉问答
  • ¥20 设计一个二极管稳压值检测电路