1、项目环境
-
jdk1.7
-
Tomcat8.0.44/适配Tomcat7、8、9
-
项目为老项目,Tomcat Web项目
2、目标
-
老项目进行了多实例化,用以适配大量访问请求,
-
要求解决多实例产生session共享的问题
3、素材
https://download.csdn.net/download/qq_36433118/85911245
tomcat-cluster-redis-session-manager.zip
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