基于redis 的tomcat session 同步

这里我把Redis放在/XX/下,所以在该目录下执行下列命令

$ wget http://download.redis.io/releases/redis-3.2.1.tar.gz

$ tar xzf redis-3.2.1.tar.gz

$ cd redis-3.2.1

$ make

启动

[root@localhost redis-3.2.1]# ./src/redis-server ../redis.conf

启动报错

解决方法

redis配置文件拷贝到/etc/redis/${REDISPORT}.conf

# mkdir /etc/redis

# cp /sxcoo/redis-2.8.21/redis.conf  /etc/redis/6379.conf

启动

[root@localhost redis-3.2.1]# ./src/redis-server  /etc/6379.conf

 

在我window环境 原创链接测试

可以正常链接

但是存值出错

 

经查阅资料

redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错

解决方法 修改redis.conf

protected-mode no

 


以上redis已经装好了,

现在要做的是将tomcat的session 用redis来管理

详细配置地址:https://github.com/izerui/tomcat-redis-session-manager

本来很简单

1、在tomcat/lib下面添加

commons-pool2-2.2.jar

jedis-2.5.2.jar

tomcat-redis-session-manager-2.0.0.jar

2、修改conf/context.xml,添加

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />

    <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

     host="localhost"

     port="6379"

     database="10"

     maxInactiveInterval="60"/>

3、启动tomcat。。但是就是不行

一脸懵逼

查看日志没有发现redis相关的异常

最后仔细阅读启动tomcat服务的日志发现了一个

No rules found matching 'Context/Value'.

这个异常是context配置文件的问题。

阅读下载的tomcat-redis-session-manager源码发现源码(tomcat-redis-session-manager)依赖了tomcat其他的包:tomcat-juli.jartomcat默认是没有这些包的,从下载tomcat-juli-adapters.jar和tomcat-juli.jar两个包,放在apache-tomcat-7.0.57\lib目录下,同时将tomcat-juli.jar放在apache-tomcat-7.0.57\bin目录下同时将编译tomcat-redis-session-manager的源码,通过相应的依赖包common-pool2.2,jedis以及tomcat-juli.jar编译,

并打成自己的jar包,上传然后将这个依赖包放在apache-tomcat-7.0.57\lib目录下,删除网上下载的tomcat-redis-session-manager-1.2-tomcat-7.jar.

经测试 成功

 

接下来测试tomcat集群负载均衡和session共享

经测试 成功

 

 

 

 

接下来测试tomcat集群负载均衡和session共享

猜你喜欢

转载自blog.csdn.net/wangshuai6707/article/details/68941519