redis已经有组件支持直接在tomcat7中设置下将redis作为tomcat默认的session存储器,下面介绍下配置过程:
1、下载tomcat7和redis2.8 软件、并安装;
2、下载common pool、jedis 和 tomcat-redis-session-manager-1.2-tomcat-7-java-7 jar包,将其放到tomcat的lib目录下;
- common pool地址:http://commons.apache.org/proper/commons-pool/
- jedis地址:https://github.com/xetorthio/jedis
- tomcat-redis-session-manager 地址:https://github.com/jcoleman/tomcat-redis-session-manager/downloads
注:我用的是jdk1.7。其实这里是有坑的,如果你全部下载最新版本的话,tomcat肯定启动不起来。我试了很久才匹配这些jar的版本。我使用的是:commons-pool-1.3.jar、jedis-2.0.0.jar、tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar
3、修改tomcat>conf>context.xml文件:
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="localhost"
port="6379"
database="0"
maxInactiveInterval="60" />
4、测试:
重启tomcat,然后在webapps的ROOT目录下新建b.jsp测试文件,内容如下。访问b.jsp后,在redis中可以发现session信息。
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<%
session.setAttribute("name","liuxiao");
%>
<title>session</title>
</head>
<body>
设置 session 属性:liuxiao
</body>
</html>
注:从Tomcat6开始默认开启了Session持久化设置,测试时可以关闭本地Session持久化,其实也很简单,在Tomcat的conf目录下的context.xml文件中,取消注释下面那段配置即可:
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->