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

Tomcat7+redis 实现session共享

2016-01-05 10:04 543 查看

版本:

Tomcat7

Jdk7

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却始终不变

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