nginx tomcat redis分布式web应用的session共享配置

 

测试环境:

 

- 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" <!-- optional: defaults to "60" (in seconds) --> />

 

注意:上面的配置要注意路径。

因为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,访问时就不需要用两个浏览器窗口来测试了,具体过程也不会太复杂,可以参考下面的博客。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值