Tomcat7+redis 实现session共享
2016-01-05 10:04
543 查看
版本:
Tomcat7Jdk7
Redis2.8.2
Nginx1.9.7
对于web应用分布式部署做负载均衡的话,目前市场上比较火的nginx,因为其高性能而受到青睐,本测试文档就采用nginx。
Niginx的下载安装配置启动
下载地址:http://nginx.org/ ,将下载的nginx zip包解压至e:/nginx配置nginx.conf
打开e:/nginx/conf/nginx.conf
简单配置如下:
http {
upstream site{
server localhost:8090;
server localhost:8080;
server localhost:8088;
}
......
}
location / {
proxy_pass http://site;
}
注:红色的均为新添加的, server为web应用的地址
Redis下载安装启动
下载redis地址:https://github.com/MSOpenTech/redis/releases
解压至e:/redis
Dos窗口进入redis根目录启动redis
输入命令redis-server.exe redis.windows.conf
因为用github上提供的编译好的jar包,测试始终无法实现共享,不知别人是否也是这样,所以这里采用源码编译。
编译tomcat-redis-session-manager源码
下载地址:https://github.com/jcoleman/tomcat-redis-session-manager下载zip包,解压
新建mavenproject
将解压后的src/main/java中的文件拷贝到新建的maven工程将源码(src/main/java)拷贝至新建maven工程的主代码包(src/main/java)中
添加依赖jar包,pom.xml 如下所示
<projectxmlns="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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.session</groupId>
<artifactId>tomcat-redis-session</artifactId>
<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>
<encoding>utf-8</encoding>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
将maven项目打包成tomcat-redis-session-0.0.1.SNAPSHOT.jar包
下载commons-pool2-2.3.jar和jedis-2.7.2.jar
配置Tomcat
准备3份tomcat(本测试tomcat7)将上面的3个jar包放入lib目录
配置context.xml文件
在
<WatchedResource>WEB-INF/web.xml</WatchedResource>后
加入
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>
<ManagerclassName="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="localhost"
port="6379"
database="0"
maxInactiveInterval="60" />
className的值为tomcat-redis-session-0.0.1.SNAPSHOT.jar中的class文件
Host默认localhost
Port默认6379,redis启动后的端口
3份tomcat的context.xml配置完全一样
测试
新建一个web测试工程在index.jsp页面中加入如下代码:
<%=request.getSession().getId()%>
<%=request.getRemoteHost()
%>
<%=request.getRemotePort()
%>
<%=request.getLocalAddr()
%>
<%=request.getLocalPort()
%>
启动redis
启动nginx
启动3个tomcat(同一台机器改端口号,本实例在同一台机器上测试)
本测试工程名springMvcWeb
分别输入:
http://localhost:8080/springMvcWeb/
http://localhost:8088/springMvcWeb/
http://localhost:8090/springMvcWeb/
效果:
输入:http://localhost/springMvcWeb/(nginx默认80端口)
不停的刷新
会看到端口号不停的改变,sessionId却始终不变
测试成功!!
相关文章推荐
- Redis常见集群方案、Codis实践及与Twemproxy比较
- Redis 集群的合纵与连横
- Redis 集群的合纵与连横
- Redis 集群的合纵与连横
- Redis 集群的合纵与连横
- Redis使用实例(RedisHelper)
- redis3.0集群
- 跟我学习dubbo-ZooKeeper注册中心安装(2)
- 基于Redis的消息队列php-resque
- redis 学习整理笔记
- redis主从同步及切换主从配置示例
- 使用Redis的Java客户端Jedis
- Redis 性能幻想与残酷现实
- Redis 配置文件详解
- 在centos6.7用yum安装redis
- Redis 数据丢失及解决
- redis学习进程--nosql和sql区别
- Jedis远程连接Redis服务器报错(connect time out)解决方案
- 通用性安装redis和基本配置
- Redis Benchmark 性能测试