tomcat集群redis配置session共享

 

针对之前的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版本和运行环境相关,请认真检查。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值