SpringSession集成redis实现session共享(No bean named 'springSessionRepositoryFilter' available)

    xiaoxiao2021-03-25  63

    分布式部署架构下传统的session共享有一定的局限性(你来到这儿想必已经受到了其带来的困扰),所以,springsession + redis(NSQL内存数据库)成了当下一个很好很时髦的选择

    ----Spring Session provides an API and implementations for managing a user’s session information. 

    Pain Point:《http://www.paotuierde.com/(点击打开链接)

    spring session是一个独立于 spring、springMVC 的 HttpSession 管理工具包,在使用的过程中一定要注意!!!在web.xml配置springSessionRepositoryFilter过滤器的时候要指定redis和集成redis配置的配置文件位置,如下面配置代码,我只是将redis和集成redis的配置信息写在了springmvc的配置文件中,不要因为以前配置springmvc没有用到context-param指定springmvc配置文件的加载位置,就不用指定以下配置文件信息,会导致以下错误,让你抓狂

    不注意以上配置信息带来的抓狂错误信息:

    三月 12, 2017 3:47:31 下午 org.apache.catalina.core.StandardContext filterStart SEVERE: Exception starting filter springSessionRepositoryFilter org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSessionRepositoryFilter' available at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687) at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1207) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1087) at org.springframework.web.filter.DelegatingFilterProxy.initDelegate(DelegatingFilterProxy.java:326) at org.springframework.web.filter.DelegatingFilterProxy.initFilterBean(DelegatingFilterProxy.java:235) at org.springframework.web.filter.GenericFilterBean.init(GenericFilterBean.java:199) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4841) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5535) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1263) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1978) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) 三月 12, 2017 3:47:31 下午 org.apache.catalina.core.StandardContext startInternal SEVERE: One or more Filters failed to start. Full details will be found in the appropriate container log file 三月 12, 2017 3:47:31 下午 org.apache.catalina.core.StandardContext startInternal SEVERE: Context [/pted] startup failed due to previous errors

    spring session集成redis的配置:

    1. web.xml

    <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>

    classpath:spring/spring-mvc.xml

    </param-value>

    </context-param>

    ……

    <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>

    2. spring-mvc.xml

    <!-- scanner redis properties --> <context:property-placeholder location="classpath:properties/redis.properties" /> <!-- ************************************** --> <!-- 通过以下配置将spring session 和redis整合到了一起 --> <bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"> <!-- 过期时间10分钟 --> <property name="maxInactiveIntervalInSeconds" value="600"></property> </bean> <!-- ************************************** --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> </bean> <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="xxx.xxx.xxx.xxx" p:pool-config-ref="jedisPoolConfig" /> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="connectionFactory" /> </bean>

    转载请注明原文地址: https://ju.6miu.com/read-34246.html

    最新回复(0)