tomcat session 共享
代码层: 1、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> <dispatcher>REQUEST</dispatcher> <dispatcher>ERROR</dispatcher> </filter-mapping> 2、porm.xml 增加 <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session</artifactId> <version>1.2.2.RELEASE</version> </dependency> tomcat: 3、tomcat目录下的 lib 文件夹增加 redisson-all-3.2.0.jar 和 redisson-tomcat-7-3.2.0.jar ( redis客户端的wiki https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95 https://github.com/redisson/redisson/wiki/14.-%E7%AC%AC%E4%B8%89%E6%96%B9%E6%A1%86%E6%9E%B6%E6%95%B4%E5%90%88#144-tomcat%E4%BC%9A%E8%AF%9D%E7%AE%A1%E7%90%86%E5%99%A8tomcat-session-manager) 4、conf 文件夹下的 context.xml 增加 <Manager className="org.redisson.tomcat.RedissonSessionManager" configPath="${catalina.base}/conf/redis.yaml" /> 5、bin 文件夹下的 setenv.sh 增加 arr=${JAVA_OPTS} for key in ${arr} do x="$(echo ${key} | awk -F '=' '{ print $1 "=" $2}')" for i in ${x}; do if [[ ${i} == *"Ddisconf"* ]] ;then if [[ ${i} == *"Ddisconf.conf_server"* ]] ;then disconf_server=`echo $i | awk -F '=' '{print $2}'` fi if [[ ${i} == *"Ddisconf.app"* ]] ;then disconf_app=`echo $i | awk -F '=' '{print $2}'` fi if [[ ${i} == *"Ddisconf.version"* ]] ;then disconf_version=`echo $i | awk -F '=' '{print $2}'` fi if [[ ${i} == *"Ddisconf.env"* ]] ;then disconf_env=`echo $i | awk -F '=' '{print $2}'` fi fi done done echo "准备下载redis.yaml。。。" redisConfig="/usr/local/tomcat8080/conf/redis.yaml" echo $redisConfig wget -q "http://disconf.frontpay.cn/api/config/file?version=${disconf_version}&app=${disconf_app}&env=${disconf_env}&key=redis.yaml" -O "${redisConfig}" if [ -f "$redisConfig" -a -s "$redisConfig" ]; then echo "下载redis.yaml完成" else echo "${redisConfig} 文件不存在" rm -rf "$redisConfig" fi
redis.yaml 配置
---
clusterServersConfig:
idleConnectionTimeout: 10000
pingTimeout: 1000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
reconnectionTimeout: 3000
failedAttempts: 3
password: null
subscriptionsPerConnection: 5
clientName: null
slaveSubscriptionConnectionMinimumIdleSize: 1
slaveSubscriptionConnectionPoolSize: 50
slaveConnectionMinimumIdleSize: 10
slaveConnectionPoolSize: 64
masterConnectionMinimumIdleSize: 10
masterConnectionPoolSize: 64
readMode: "SLAVE"
nodeAddresses:
- "redis://10.1.20.159:7000"
- "redis://10.1.20.159:7001"
- "redis://10.1.20.159:7002"
- "redis://10.1.21.2:7001"
- "redis://10.1.21.2:7002"
scanInterval: 1000
threads: 0
nettyThreads: 0
useLinuxNativeEpoll: false