• 用redis实现tomcat集群下的session共享


    上篇实现了 LINUX中NGINX反向代理下的TOMCAT集群(http://www.cnblogs.com/yuanjava/p/6850764.html)

    这次我们在上篇的基础上实现session 共享问题

    Nginx机器:192.168.1.108

    两台tomcat机器分别是:192.168.1.168

                                   192.168.1.178

    一:测试session共享问题

    在原index.jsp页面添加如下代码

    SessionId:<%= session.getId() %>
    <% String username =(String)session.getAttribute("username");
    if(!"".equals(username)&& username!=null){
    out.print("------username is "+session.getAttribute("username"));
    } else {
    out.print("------start username is null");
    session.setAttribute("username", "lxs");
    out.print("------now username is "+session.getAttribute("username"));

    }

    %>

    此时,通过nginx 访问时 第一次访问的是 178那台机器 

    再次刷新时,访问了168那台机器

    可以看出,此时 session 是不共享的,在集群下,分别创建了session

    二:用redis实现 session 共享

       实现  session 共享的方法有很多种,此次用的是把session存在 redis 中实现共享。

      1.安装redis (如何安装请看http://www.cnblogs.com/yuanjava/p/6793251.html)

    redis也是安装在192.168.1.108,跟Nginx安装在同一台机器了

      2.把需要的jar包分别拷贝到 两个tomcat 的lib目录下

    3. 修改 context.xml 里的内容

    分别在tomcat/conf/context.xml里添加如下内容

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

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

        host="192.168.1.108"           

        port="6379"                 

        database="0"                 

        maxInactiveInterval="60" />

    其中className 是固定的,取得是 jar包里的实现的类

    host 是redis 的主机名  port是redis端口  database 是把session存放在redis的第几个库里,maxInactiveInterval表示session存活时间

     4.再次测试session共享

    经过前三步,已经实现了redis下的session共享问题,再次测试

    分别启动redis,nginx,以及tomcat 再次访问http://192.168.1.108:7777/nginxTest/

    此时nginx 首先转发到178那台机器,此时,session里的 username是为空的,然后往

    username里存放了一个值,然后打印出了值

     

     

    再次访问http://192.168.1.108:7777/nginxTest/,此时nginx 转到了168那台机器

    此时 sessionid 跟178的一样。同时username 也是有值的,直接打印出了 值

    这说明了 此时session 是共享的,同时在redis里也存进去了对应session

  • 相关阅读:
    pip 提示import error,cannot import name locations
    Selenium 报错 提示“unable to find an ant file to run”
    python-unexpected content storage modification出错
    C++对象的动态建立与释放
    C++构造函数和析构函数
    C++类的访问控制关键字
    C++之namespace、bool
    C++ 学习笔记
    内存泄漏
    内存回收机制
  • 原文地址:https://www.cnblogs.com/yuanjava/p/6979336.html
Copyright © 2020-2023  润新知