虽然Tomcat本人一直觉得是个一般的东西,但是替代方案暂时又没有全场景靠谱的,考虑两个场景:
1,当你重启tomcat的时候,原来登录的用户会话信息都丢了,所有用户要重新登录一遍。
2,当你使用单tomcat的时候也就罢了,当使用集群,多个tomcat协同,统一的会话信息如何保存
(方案很多,这里暂且当个栗子来用一下,对这个有兴趣的话评论里面可以讨论。)
以上两个场景怎么解决呢?
闪亮出场,Redis!
说一下原理:
Tomcat的原始单机用法是将会话信息保存在本地JVM中,纯cache,当重启tomcat,重启服务器都会导致清空,清空以后再启动起来,当然原来所有的用户都要重新登录一遍。
Redis我们知道是NoSQL算个缓存数据库,原来我们保存在tomcat中的会话信息,由Tomcat的JVM转移到Redis中,同时Redis又放在另一台服务器上运行。Tomcat的死活与会话再也没有关系啦。
开始实操:
1,下载安装Redis:
2,启动Redis
./usr/local/bin/redis-server /etc/redis-6379.conf
3,下载安装tomcat,这个很简单,不写了
4,下载:
A,Jedis(redis驱动)
B,Tomcat Redis Session Manager
C,Apache Commons Pool
上面下载完成以后,将相关jar都扔到tomcat的lib目录中
5,Tomcat 的conf/context.xml 文件里增加如下内容(多台tomcat集群都要修改):
6,重启所有Tomcat就OK了,现在所有tomcat都共用Redis作为session的存储工具了。
开篇的两个问题解决了。