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

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 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效