您的位置:首页 > 数据库 > Redis

tomcat集群redis配置session共享

2017-11-03 09:47 471 查看
 
针对之前的nginx+tomcat的负载均衡机制,因为会出现session丢失的问题,特研究了下redis的session共享;下载JDK7、tomcat7以备后续测试;
一、下载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系列来运行的,所以必须保持一致;
二、下载安装redis(linxu版本)

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

安装成功后直接启动redis:redis-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版本和运行环境相关,请认真检查。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: