spring-session-redis-nginx-tomcat负载均衡session共享以及session监听配置
1.前提得搭好基本的SSM框架。有Spring配置文件。
添加一个 spring-redis.xml ,添加完成记得在Sping配置文件中加载这个xml文件及属性文件。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <!-- Spring-Session+Redis实现session共享配置如下 --> 7 <!-- 添加RedisHttpSessionConfiguration用于session共享 --> 8 <bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"> 9 <!-- 最大活动间隔秒 --> 10 <property name="maxInactiveIntervalInSeconds" value="10" /> 11 </bean> 12 13 <!-- Redis连接池配置 --> 14 <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> 15 <!-- 连接池中最大连接数。高版本:maxTotal,低版本:maxActive --> 16 <property name="maxTotal" value="8" /> 17 <!-- 连接池中最大空闲的连接数. --> 18 <property name="maxIdle" value="4" /> 19 <!-- 连接池中最少空闲的连接数. --> 20 <property name="minIdle" value="1" /> 21 <!-- 当连接池资源耗尽时,调用者最大阻塞的时间,超时将跑出异常。单位,毫秒数;默认为-1.表示永不超时。高版本:maxWaitMillis,低版本:maxWait --> 22 <property name="maxWaitMillis" value="5000" /> 23 <!-- 连接空闲的最小时间,达到此值后空闲连接将可能会被移除。负值(-1)表示不移除. --> 24 <property name="minEvictableIdleTimeMillis" value="300000" /> 25 <!-- 对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3 --> 26 <property name="numTestsPerEvictionRun" value="3" /> 27 <!-- “空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1. --> 28 <property name="timeBetweenEvictionRunsMillis" value="60000" /> 29 <!-- testOnBorrow:向调用者输出“链接”资源时,是否检测是有有效,如果无效则从连接池中移除,并尝试获取继续获取。默认为false。建议保持默认值. --> 30 <!-- testOnReturn:向连接池“归还”链接时,是否检测“链接”对象的有效性。默认为false。建议保持默认值.--> 31 <!-- testWhileIdle:向调用者输出“链接”对象时,是否检测它的空闲超时;默认为false。如果“链接”空闲超时,将会被移除。建议保持默认值. --> 32 <!-- whenExhaustedAction:当“连接池”中active数量达到阀值时,即“链接”资源耗尽时,连接池需要采取的手段, 默认为1(0:抛出异常。1:阻塞,直到有可用链接资源。2:强制创建新的链接资源) --> 33 </bean> 34 35 <!-- Spring提供的Reids连接工厂 --> 36 <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy"> 37 <!-- 连接池配置 --> 38 <property name="poolConfig" ref="jedisPoolConfig" /> 39 <!-- Redis服务主机 --> 40 <property name="hostName" value="${redis_hostname}" /> 41 <!-- Redis服务端口号 --> 42 <property name="port" value="${redis_port}" /> 43 <!-- Redis服务连接密码 44 <property name="password" value="${redis_password}" />--> 45 <!-- 超时设置(毫秒单位) --> 46 <property name="timeout" value="15000" /> 47 <!-- 是否使用连接池 --> 48 <property name="usePool" value="true" /> 49 </bean> 50 51 </beans>
redis.properties
redis_hostname=127.0.0.1
redis_port=6379
#redis_password=
然后Session监听就在Sping配置文件中添加如下Bean其中的SessionListener是自己建的。
1 <!-- 此配置用于Session监听 --> 2 <bean class="org.springframework.session.web.http.SessionEventHttpSessionListenerAdapter"> 3 <constructor-arg name="listeners"> 4 <bean class="com.zcl.blog.listener.SessionListener" /> 5 </constructor-arg> 6 </bean>