测试环境:
-
Version
ip
Port
nginx(可选) |
|
|
|
jdk |
1.7.0_79 |
|
|
tomcat1 |
7.0.70 |
127.0.0.1 |
8082 |
tomcat2 |
7.0.70 |
127.0.0.1 |
8083 |
redis |
2.8.9 |
127.0.0.1 |
6379 |
1.获得tomcat-redis-session-manager.jar
①从github上下载tomcat-redis-session-manager-版本 的源码。
②编译源码
使用命令行切换到源码目录,使用命令gradle build编译。
具体步骤请参考博客:http://blog.csdn.net/wanglipo/article/details/51669526
2.拷贝jar包到tomcat的lib目录下
tomcat-redis-session-manager.jar
commons-pool2.jar
jedis.jar
将以上3个jar包拷贝到tomcat/lib下面。
3.在Tomcat中配置redis session管理器
在tomcat目录/conf/context.xml中配置如下(有几个tomcat参与管理session就要都配置)
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="localhost"
port="6379"
database="0" <!-- optional: defaults to "0" -->
maxInactiveInterval="60" />
注意:上面的配置要注意路径。
因为github上最新版已经将tomcat6和7,jdk6和7都兼容了,而以前则是分成不同工程。因此两者使用了不同的名称。
新版本使用的是com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve
旧版本使用的是com.radiadesign.catalina.session.RedisSessionHandlerValve
【如果使用的话,直接使用新版本即可】
4.测试
注意:
因为是在同一台pc上部署的两个tomcat,所以需要将tomcat端口改成不一样的。
Tomcat1:
<Server port="8025" shutdown="SHUTDOWN">
<Connector connectionTimeout="20000" port="8082" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8029" protocol="AJP/1.3" redirectPort="8443"/>
Tomcat2:
<Server port="8035" shutdown="SHUTDOWN">
<Connector connectionTimeout="20000" port="8083" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8039" protocol="AJP/1.3" redirectPort="8443"/>
在两个tomcat中部署项目,这里简单处理如下。
在tomcat1的webapps下新建www目录,并在www下新建index.jsp文件。
文件内容如下:(如果是tomcat2则将”TomcatA”改为”TomcatB”)
<%@ pagelanguage="java" %>
<html>
<head><title>TomcatA</title></head>
<body>
<%
out.println("This is TomcatA");
%>
<br>
sessionID:<%=session.getId()%>
<br>
SessionIP:<%=request.getServerName()%>
<br>
SessionPort:<%=request.getServerPort()%>
</body>
</html>
现在可以进行测试了。启动redis,启动tomcat1和tomcat2。分别访问http://localhost:8082/www/index.jsp和http://localhost:8083/www/index.jsp
访问后浏览器结果如下:
测试结果说明:
很显然,这两个浏览器输出来自不同的tomcat。但是其sessionID却是一样的,说明session共享成功。
最后使用redis客户端查看一下保存进redis的内容:
说明使用redis来管理session时,将sessionID作为key保存在了redis。key的值发现是乱码,发现还有个TTL,自然就是过期时间了(刷新一下,该值在减小)。
再使用redis自带的客户端打开瞧瞧key的值,发现了熟悉的字样,出现了jar包目录相关的字符串,还有SessionSerialization(session序列化)。
到此,使用redis来管理session的测试结束。当然了,我们还可以加个nginx来将请求分发到tomcat1和tomcat2,访问时就不需要用两个浏览器窗口来测试了,具体过程也不会太复杂,可以参考下面的博客。
文中用到的资源下载:context.xml、index.jsp和三个jar包
参考博客:基于nginx tomcat redis分布式web应用的session共享配置
相关问题:
使用tomcat-redis-session-manager 有没有弊端?
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
压缩文件包括tomcat-redis-session-manager-master-2.0.0.jar、jedis-2.7.3.jar、commons-pool2-2.3.jar三个jar包使用方法请参照https://github.com/jcoleman/tomcat-redis-session-manager。apache-tomcat-8.5.33....
tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-...
使用tomcat-redis-session-manager进行统一session管理所需jar包,包括tomcat6-jdk6、tomcat7-jdk7、tomcat8-jdk8
tomcat9负载均衡tomcat-cluster-redis-session-manager_4.0
Tomcat8亲测可用 tomcat-redis-session-manager的jar包 修改了tomcat-redis-session-manager源码进行的编译生成的jar包
用于配置 tomcat-redis-session-manager
因tomcat7使用redis共享session,其他的包存在问题,自己编译后处理通过。 该包是在https://github.com/jcoleman/tomcat-redis-session-manager 将源码编译后的包。
tomcat-redis-session-manager-2.0.0.jar
tomcat-redis-session-manager源码
tomcat-redis-session-manager-2.0.0.jar jedis-2.5.2.jar commons-pool2-2.2.jar 2.修改 conf 目录下的 context.xml 文件 <Valve className="com.orangefunction.tomcat.redissessions....
tomcat-redis-session-manager-2.0.0jar包实现session共享问题
session 共享 tomcat-redis-session-manager 所需要的jar 和 redis-data-cache.properties文件 (绝对可用) 已经完整测试
所需的tomcat-redis-session-manager所有的jar包下载。测试环境JDK1.8,Tomact8
包括commons-pool-1.6.jar,jedis-2.0.0.jar,tomcat-redis-session-manager-1.2-tomcat-6&7.jar
支持tomcat8的sessionManager,kuanrf-tomcat-redis-session-manager-1.0.jar
tomcat redis session共享,支持tomcat7 jdk7、tomcat8 jdk7、tomcat8 jdk8、tomcat8.5 jdk7、tomcat9 jdk8
nginx做请求转发,服务器tomcat解决session不同步问题;步骤:1、解压之后,将jar包放入tomcat的lib中(注意是tomcat/lib中,不是我们自己项目... <Manager className="tomcat.request.session.redis.SessionManager"/>