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

经验分享 程序员 微信小程序 职场和发展