zoukankan      html  css  js  c++  java
  • tomcat-使用redis做session_id共享

    用途:tomcat集群共享session。 支持tomcat7,8,9

    1、安装tomcat(2个)(仅在实验环境配置,用作验证使用)

    • 安装tomcat
    unzip apache-tomcat.zip -d /service/tomcat1
    unzip apache-tomcat.zip -d /service/tomcat1
    
    • 修改tomcat端口,保持两个实例的端口不冲突
    • 在tomcat的数据文件夹中,增加查看session ID的页面
    cat > /service/tomcat1/webapps/ROOT/index.jsp <<EOF
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>获取session id</title>
    </head>
    <body>
        Session Id : <%= request.getSession().getId() %>
    </body>
    </html>
    EOF
    
    cat > /service/tomcat2/webapps/ROOT/index.jsp <<EOF
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>获取session id</title>
    </head>
    <body>
        Session Id : <%= request.getSession().getId() %>
    </body>
    </html>
    EOF
    

    2、 安装redis(端口:6379,密码passwd,IP:127.0.0.1)


    3、配置tomcat使用redis共享session ID

    wget https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/2.0.4/tomcat-cluster-redis-session-manager.zip
    
    • 解压解压,并复制jar文件至tomcat/lib目录中
    unzip  tomcat-cluster-redis-session-manager.zip
    cd tomcat-cluster-redis-session-manager
    cp lib/*.jar /service/tomcat1/lib
    cp lib/*.jar /service/tomcat2/lib
    
    • redis-data-cache.properties复制至 tomcat/conf目录中
    cp conf/redis-data-cache.properties /service/tomcat1/conf
    cp conf/redis-data-cache.properties /service/tomcat2/conf
    
    • 配置tomcat/conf/ redis-data-cache.properties 文件
    #-- Redis data-cache configuration
    
    
    #- redis hosts ex: 127.0.0.1:6379, 127.0.0.2:6379, 127.0.0.2:6380, ....
    redis.hosts=127.0.0.1:6379
    
    
    #- redis password (for stand-alone mode)
    redis.password=password
    
    
    #- set true to enable redis cluster mode
    redis.cluster.enabled=false
    
    
    #- redis database (default 0)
    #redis.database=0
    
    
    #- redis connection timeout (default 2000)
    #redis.timeout=2000
    

    可以配置redis-cluster集群模式,按照实例,修改对应参数即可

    • 配置tomcat/conf/context.xml文件
        <Valve className="tomcat.request.session.redis.SessionHandlerValve" />
        <Manager className="tomcat.request.session.redis.SessionManager" />
    </Context>
    
    • 配置tomcat/conf/web.xml文件 (计数单位:分)(配置sessionID过期时间)
        <session-config>
             <session-timeout>30<session-timeout>
        <session-config>
    

    如果项目中有配置,以项目配置为准


    4、 重启tomcat后生效。

    通过浏览器访问tomcat两个实例的页面,都为同一个session ID。

    Session Id : 8AE6024E09FE16D1B5734C4BD7012AE2

    查询redis缓存库

    get 8AE6024E09FE16D1B5734C4BD7012AE2
    127.0.0.1:6379> get 8AE6024E09FE16D1B5734C4BD7012AE2
    "xacxedx00x05srx00<com.r.tomcat.session.management.SessionSerializationMetadatax01xbax17xdexc0oxb0
    x03x00x01[x00x15sessionAttributesHashtx00x02[Bxpwx14x00x00x00x10x1cx1fxd4xa1kx1aqxd3uxfbexbffJx8cxabxsrx00x0ejava.lang.Long;x8bxe4x90xccx8f#xdfx02x00x01Jx00x05valuexrx00x10java.lang.Numberx86xacx95x1dx0bx94xe0x8bx02x00x00xpx00x00x01dn3cRsqx00~x00x03x00x00x01dn3cRsrx00x11java.lang.Integerx12xe2xa0xa4xf7x81x878x02x00x01Ix00x05valuexqx00~x00x04x00x00x0ex10srx00x11java.lang.Booleanxcd rx80xd5x9cxfaxeex02x00x01Zx00x05valuexpx01qx00~x00
    sqx00~x00x03x00x00x01dn3cRtx00 8AE6024E09FE16D1B5734C4BD7012AE2sqx00~x00ax00x00x00x00wx00x00x01dn3cR" 
    

    配置成功,前端代理nginx可以不用配置配置ip hash来保持session

  • 相关阅读:
    Autofac
    MYSQL存储过程获取记录总数
    MYSQL通用存储过程
    判断用户用手机访问还是用电脑访问网页
    HttpRuntime.Cache与HttpContext.Current.Cache
    Eclipse之NDK编译-- Type 'jint' could not be resolved, and JNIEnv, jclass错误解决办法
    解决Android adjustresize全屏无效问题
    Android手机使用广播监听手机收到的短信
    使用Jackson解析首字母大写的json字符串
    Android Studio中设置提示函数用法
  • 原文地址:https://www.cnblogs.com/taoyuxuan/p/12145223.html
Copyright © 2011-2022 走看看