tomcat集群redis配置session共享

来源:互联网 发布:邪恶漫画软件大全 编辑:程序博客网 时间:2024/06/08 14:14

 

针对之前的nginx+tomcat的负载均衡机制,因为会出现session丢失的问题,特研究了下redissession共享;下载JDK7tomcat7以备后续测试;

一、下载tomcat-redis-session的源码自行打包:https://github.com/jcoleman/tomcat-redis-session-manager


这里要对tomcat-redis-session打包做一下特殊记录:


上图中的构建pom.xml

<?xml  version="1.0"  encoding="GB2312"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hik</groupId><artifactId>tomcat-redis-session</artifactId><!--<packaging>war</packaging>--><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-catalina</artifactId><version>7.0.27</version></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.2</version></dependency> </dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.0</version><configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build></project>


由于我们的环境都是基于7系列来运行的,所以必须保持一致;

二、下载安装redislinxu版本)

wget http://redis.googlecode.com/files/redis-2.4.6.tar.gz

解压:

tar –zxvfredis-2.4.6.tar.gz

编译

需要说明的事,redis的安装非常简单,已经有现成的Makefile文件,直接运行make命令即可。

make

make install

安装成功后直接启动redisredis-server/etc/redis.conf,如图

新开窗口redis-cli测试:

Set a 123

Get a 得到123 安装成功可以使用

 

三、上边源码自己打包生成tomcat-redis-session.jar包,从网上下载jedis-2.7.2.jar   commons-pool2-2.4.1.jar;将这3个包放入tomcat\lib目录下;

 

四、配置tomcat\conf下的context.xml文件

将以下代码添加进context.xml里边

<!-- tomcat-redis-session共享配置 -->        <ValveclassName="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>            <ManagerclassName="com.orangefunction.tomcat.redissessions.RedisSessionManager"             host="localhost"              port="6379"              database="0"              maxInactiveInterval="60" />  


 

五、tomcat测试session共享配置

准备两个tomcat模拟,每个配置都跟上边一样,然后

       Tomcat18080 webapp/index.jsp修改:<% request.getSession().setAttribute(“a”,”123”);%>

       Tomcat28090 webapp/index.jsp 修改:<% out.print(request.getSession().getAttribute(“a”))%>

六、测试整个环境:

服务器记得先启动redis

启动tomcat1,访问http://localhost:8080/index.jsp

启动tomcat2,访问 http://localhost:8090/index.jsp,可看到页面显示123,证明session共享成功。

 

七、可能会出现的错误

Tomcat可能启动不正常,最大的原因是jar包没用对应的版本,本人测试可以用的相关jar版本是commons-pool2-2.3,jedis-2.7.2。
tomcat-redis-session-manager-master.jar如果不能用就按文档自己重新打包。如果有其他错误(比如java.lang.UnsupportedClassVersionError
的话就去检查下启动指定jdk是否为1.7
如果报错xml文件如果读取错误(Invalid byte 1 of 1-byte UTF-8 sequence)就修改context.xml  encoding="GB2312"?>
其他错误基本上都跟jar版本和运行环境相关,请认真检查。

 


原创粉丝点击