Tomcat Redis Session 共享实现
1、项目环境
-
jdk1.7 Tomcat8.0.44/适配Tomcat7、8、9 项目为老项目,Tomcat Web项目
2、目标
-
老项目进行了多实例化,用以适配大量访问请求, 要求解决多实例产生session共享的问题
3、素材
4、操作
①将tomcat-cluster-redis-session-manager.zip解压
②将conf和lib下的分别复制到Tomcat下的conf和lib下
③修改tomcat/conf/redis-data-cache.properties 的redis连接配置
④将下面两行代码加入Tomcat下conf/context.xml的context标签中
<Valve className="tomcat.request.session.redis.SessionHandlerValve" /> <Manager className="tomcat.request.session.redis.SessionManager" />
⑤检查tomcat/conf/web.xml文件中的会话过期时间(分钟)
<session-config> <session-timeout>60<session-timeout> <session-config>
5、出现问题 ①项目中使用了Slf4j-api和log4j的jar包,和Tomcat引入jar相冲突
把 tomcat/portal/lib/log4j-1.2.16.jar slf4j-log4j12-1.6.4.jar放回到了 webapps/下的lib里 注意:这两个包是项目中使用的,后我移到Tomcat lib下
②出现项目启动失败
在生成随机数的时候卡住了,导致tomcat启动不了
在服务器启动时也可以加上参数 -Djava.security.egd=file:/dev/./urandom 其中 -Djava.security.egd=file:/dev/random( 这等于默认选项 ) 默认算法: NativePRNG 提供程序: SecureRandom.NativePRNG算法来自:SUN
-Djava.security.egd=file:/dev/urandom 默认算法: NativePRNG 提供程序: SecureRandom.NativePRNG算法来自:SUN
-Djava.security.egd=file:/dev/./urandom 默认算法: DRBG 提供者: SecureRandom.DRBG算法来自:SUN
-Djava.security.egd=file:/dev/./urandom
