同一个应用在运行多个tomcat实例的时候,经常需要共享Session。tomcat配置共享session有多种方式

1、利用tomcat自身集群特性进行配置;

2、利用Memcache第三方缓存进行配置;

3、利用Redis第三方缓存进行配置;

由于生产环境我们主使用了redis(在阿里云中使用了redis服务)本文重点介绍了tomcat利用redis进配置session共享。

重点在于tomcat 8.x

因为tomcat7还有点不同,tomcat7的配置可以利用一个开源组件,直接配置即可以使用,比较简单方便(直接参考这个文章即可:http://blog.csdn.net/qq584852076/article/details/46502185)。

tomcat8却是有不同的,开源组件明确说是不支持的。

开源组件在这里: https://github.com/jcoleman/tomcat-redis-session-manager

打开网址之后,看Readme说明:

分步指南

1. 下载开源项目

        
2. 创建maven项目(或者直接用gradle编译也可以)
        创建项目并把src/main/java/com/orangefunction/tomcat/redissessions/复制到项目
3. 支持tomcat8需修改代码
        RedisSessionManager.java        
  @@ -713,9 +713,9 @@ private void initializeSerializer() throws ClassNotFoundException, IllegalAccess
  serializer = (Serializer) Class.forName(serializationStrategyClass).newInstance();   serializer = (Serializer) Class.forName(serializationStrategyClass).newInstance();
       
  Loader loader =null;   Loader loader =null;
  -   +Context context =this.getContext();
  - if (getContainer()!=null) {   + if (context!=null) {
  - loader =getContainer().getLoader();   + loader =context.getLoader();
  }   }
       
  ClassLoader classLoader =null;   ClassLoader classLoader =null;
 
 
 
4. 打包部署
    将实现包和依赖包 commons-pool2-2.2.jar、jedis-2.5.2.jar、tomcat-redis-session-manager-master-2.0.0.jar拷贝到tomcat的lib下
    新增tomcat context.xml配置
   

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> 
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="r-wz97b7d28a98aa44.redis.rds.aliyuncs.com"
port="6379"
database="0"
password="xxxxxxx"
maxInactiveInterval="60" />

 
 

建议引用的几个jar( commons-pool2-2.2.jar、jedis-2.5.2.jar)和新编译的jar(tomcat-redis-session-manager-2.0.0.jar)放在tomcat的 lib下面。

同时如果应用下的WEB-INF/lib有相同的jar去掉

重启tomcat服务即可

相关的文章

Tomcat8利用Redis配置Session共享的更多相关文章

  1. Spring Boot 多站点利用 Redis 实现 Session 共享

    如何在不同站点(web服务进程)之间共享会话 Session 呢,原理很简单,就是把这个 Session 独立存储在一个地方,所有的站点都从这个地方读取 Session. 通常我们使用 Redis 来 ...

  2. Nginx集群配置与redis的session共享策略

    一.什么是Nginx? Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ramb ...

  3. Tomcat通过Redis实现session共享的完整部署记录

    对于生产环境有了一定规模的tomcat集群业务来说,要实现session会话共享,比较稳妥的方式就是使用数据库持久化session.为什么要持久化session(共享session)呢?因为在客户端每 ...

  4. nginx反向代理做负载均衡以及使用redis实现session共享配置详解

    1.为什么要用nginx做负载均衡? 首先我们要知道用单机tomcat做的网站,比较理想的状态下能够承受的并发访问在150到200, 按照并发访问量占总用户数的5%到10%技术,单点tomcat的用户 ...

  5. 分布式中使用Redis实现Session共享(二)

    上一篇介绍了一些redis的安装及使用步骤,本篇开始将介绍redis的实际应用场景,先从最常见的session开始,刚好也重新学习一遍session的实现原理.在阅读之前假设你已经会使用nginx+i ...

  6. Nginx+tomcat+redis实现session共享

    Nginx+tomcat+redis实现session共享 1,安装nginx,使用yum -y install nginx 这是epel源中的,需要安装epel源. 2,配置nginx. 在ngin ...

  7. [转]分布式中使用Redis实现Session共享(二)

    本文转自:http://www.cnblogs.com/yanweidie/p/4678095.html 上一篇介绍了一些redis的安装及使用步骤,本篇开始将介绍redis的实际应用场景,先从最常见 ...

  8. (转)分布式中使用Redis实现Session共享(二)

    上一篇介绍了一些redis的安装及使用步骤,本篇开始将介绍redis的实际应用场景,先从最常见的session开始,刚好也重新学习一遍session的实现原理.在阅读之前假设你已经会使用nginx+i ...

  9. nginx负载均衡中利用redis解决session一致性问题

    关于session一致性的现象及原因不是本小作文的重点,可以另行找杜丽娘O(∩_∩)O哈哈~重点是利用redis集中存储共享session的实际操作. 一.业务场景:nginx/tomcat/redi ...

随机推荐

  1. java定时执行任务(一)

    需求: 经常遇到这样的需求:要求每天执行一次任务,执行任务时间是凌晨3点 实现: 为了便于检测,我假设的是下一分钟执行任务,每10秒重复执行.(对应现实项目:每天3点执行任务.那么就是下一个3点执行任 ...

  2. lintcode-179-更新二进制位

    179-更新二进制位 给出两个32位的整数N和M,以及两个二进制位的位置i和j.写一个方法来使得N中的第i到j位等于M(M会是N中从第i为开始到第j位的子串) 注意事项 In the function ...

  3. MVC4+EF5 edmx代码分析

    本文分析Entity Framework(EF)从数据库自动生成的模型文件代码(扩展名为edmx). 一. 概述 本文使用的数据库结构尽量简单,只有2个表,一个用户表和一个分公司表(相当于部门表),一 ...

  4. 201621044079 week13 网络

    作业13-网络 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以 ...

  5. week1 四人小组项目

    小组名称:nice! 项目组长:李权 组员:于淼 刘芳芳 杨柳 项目选题:东北师范大学论坛 作为东北师范大学同学间的信息交流平台,要满足的需求如下: 1.校内信息及公告 2.毕业生招聘信息 3.课程查 ...

  6. ZOJ 2110 C - Tempter of the Bone

    https://vjudge.net/contest/67836#problem/C The doggie found a bone in an ancient maze, which fascina ...

  7. 制作QQ微信支付宝三合一收款码

    转载:http://blog.mambaxin.com/article/56 发现很多博客都带了打赏功能,虽说打赏的人可能很少,但始终是一份心意,能让博主知道自己写的文章有用,能够帮助到人.所以,我也 ...

  8. MySQL中的条件语句

    判断学生表中成绩是否小于60,将小于60的学生成绩列为不及格 学生表(student) 字段:姓名(name),学号(主键)(num),性别(sex),成绩(score) select *,if(sc ...

  9. RT-thread内核之邮箱

    一.邮箱控制块:在include/rtdef.h中 #ifdef RT_USING_MAILBOX /** * mailbox structure */ struct rt_mailbox { str ...

  10. poj3164-Command Network

    给出平面上一些点,和连接它们的带权有向边,求把所有点连起来的最小总权值. 分析 由于这里边是有向的(unidirectional),所以这是经典的最小树形图问题,可以说是最小树形图的模板题. 代码 这 ...