• nginx+tomcat+redis完成session共享


    本文记录nginx+redis+tomcat实现session共享的过程

    nginx安装:http://blog.csdn.net/grhlove123/article/details/47834673

    redis安装:http://blog.csdn.net/grhlove123/article/details/47783471

    准备两个tomcat,修改相应的端口

    名称 IP 端口 tomcat版本 JDK
    tomcat1 10.10.49.23 8080 7.0.40 1.7.0_25
    tomcat2 10.10.49.15 8081 7.0.40 1.7.0_25

    修改nginx.conf加上:

    [html] view plain copy
     
    1. upstream backend {  
    2.     server 10.10.49.23:8080 max_fails=fail_timeout=10s;  
    3.     server 10.10.49.15:8081 max_fails=fail_timeout=10s;  
    4. }  
    修改nginx.conf的location成
    [html] view plain copy
     
    1. location / {  
    2.     root   html;  
    3.     index  index.html index.htm;  
    4.     proxy_pass http://backend;  
    5.  }  

    启动nginx。

    下载tomcat-redis-session-manager相应的jar包,主要有三个:

    wget https://github.com/downloads/jcoleman/tomcat-redis-session-manager/tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar
    wget http://central.maven.org/maven2/redis/clients/jedis/2.5.2/jedis-2.5.2.jar
    wget http://central.maven.org/maven2/org/apache/commons/commons-pool2/2.0/commons-pool2-2.0.jar

    下载完成后拷贝到$TOMCAT_HOME/lib中

    修改两tomcat的context.xml:

    [html] view plain copy
     
    1. <Context>  
    2.   
    3.     <!-- Default set of monitored resources -->  
    4.     <WatchedResource>WEB-INF/web.xml</WatchedResource>  
    5.   
    6.     <!-- Uncomment this to disable session persistence across Tomcat restarts -->  
    7.     <!-- 
    8.     <Manager pathname="" /> 
    9.     -->  
    10.   
    11.     <!-- Uncomment this to enable Comet connection tacking (provides events  
    12.          on session expiration as well as webapp lifecycle) -->  
    13.     <!-- 
    14.     <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> 
    15.     -->  
    16.   
    17.   <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />  
    18.   <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"  
    19.    host="10.10.49.20"  
    20.    port="6379"  
    21.    database="0"  
    22.    maxInactiveInterval="60" />  
    23. </Context>  

    在tomcat/webapps/test放一个index.jsp
    [html] view plain copy
     
    1. <%@ page language="java" %>  
    2. <html>  
    3.   <head><title>TomcatA</title></head>  
    4.   <body>  
    5.    
    6.     <table align="centre" border="1">  
    7.       <tr>  
    8.         <td>Session ID</td>  
    9.         <td><%= session.getId() %></td>  
    10.       </tr>  
    11.       <tr>  
    12.         <td>Created on</td>  
    13.         <td><%= session.getCreationTime() %></td>  
    14.      </tr>  
    15.     </table>  
    16.   </body>  
    17. </html>  
    18. sessionID:<%=session.getId()%>   
    19. <br>   
    20. SessionIP:<%=request.getServerName()%>   
    21. <br>   
    22. SessionPort:<%=request.getServerPort()%>   
    23. <%   
    24. //为了区分,第二个可以是222  
    25. out.println("This is Tomcat Server 1111");   
    26. %>    

    启动tomcat,发现有异常:com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve 类找不到

    分别打开三个jar包,确实没有这个类,解决可以参考:

    http://blog.csdn.net/qinxcb/article/details/42041023

    通过访问http://10.10.49.20/test/


    刷新:

    可以看到虽然Server从1111变为2222,但session的创建时间没有变化,这就完成了session共享。

     
     http://blog.csdn.net/grhlove123/article/details/48047735

    1,安装redis并配置和启动, tomcat也做相就的下载,其他地方都有,可以在其他地方查阅。
    2,  获取tomcat依赖包:
                 Tomcat使用 从https://github.com/xetorthio/jedis/downloads下载jedis作为java的redis客户端,
                  从https://github.com/jcoleman/tomcat-redis-session-manager/downloads下载tomcat的redis session manager插件
              从http://commons.apache.org/proper/commons-pool/download_pool.cgi下载apache的common pool2包,2.2,将这几个jar包拷贝到tomcat7的lib目录下
             包有: redis2.8、jedis.jar、common-pool2.2.jar、tomcat-redis-session-manager-1.2-tomcat-7.jar
    3 配置 tomcat
               在https://github.com/jcoleman/tomcat-redis-session-manager 这里面文章看到的配置为:
              <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
             <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
             host="localhost" <!-- optional: defaults to "localhost" -->
             port="6379" <!-- optional: defaults to "6379" -->
             database="0" <!-- optional: defaults to "0" -->
             maxInactiveInterval="60" <!-- optional: defaults to "60" (in seconds) -->
             sessionPersistPolicies="PERSIST_POLICY_1,PERSIST_POLICY_2,.." <!-- optional -->
             sentinelMaster="SentinelMasterName" <!-- optional -->
             sentinels="sentinel-host-1:port,sentinel-host-2:port,.." <!-- optional --> />
                而下载的包tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar或tomcat-redis-session-manager-1.2-tomcat-7.jar
     4 相关包的里面并没有类:com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve
         所以从https://github.com/jcoleman/tomcat-redis-session-manager直接下载源码
         发现源码里面存在相应的类,同时源码(tomcat-redis-session-manager)依赖了tomcat其他的包:tomcat-juli.jar
         而tomcat默认是没有这些包的,从http://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.57/bin/extras/ 下载tomcat-juli-adapters.jar和tomcat-juli.jar两个包,放在apache-tomcat-7.0.57lib目录下,同时将tomcat-juli.jar放在apache-tomcat-7.0.57in目录下

         同时将编译tomcat-redis-session-manager的源码,通过相应的依赖包common-pool2.2,jedis以及tomcat-juli.jar编译,

    并打成自己的jar包,我已经上传在:

        http://download.csdn.net/detail/qinxcb/8279761
       然后将这个依赖包放在apache-tomcat-7.0.57lib目录下,删除网上下载的tomcat-redis-session-manager-1.2-tomcat-7.jar.

    http://blog.csdn.net/qinxcb/article/details/42041023

  • 相关阅读:
    【Oracle】修改oracle数据库的字符集
    【OS_Linux】Centos7 设置定时任务
    【 DB_Oracle】Oracle多表关联更新
    Java后端技术路线
    【 OS_Linux】centos下查找jdk的安装路径
    【实用工具】Notepad++的主题和字体设置
    【OS_Linux】Linux删除指定日期之前的文件
    【OS_Windows】windows下删除指定日期前的文件
    C#计算一段程序运行时间的三种方法
    Win10 新功能 改变显示器色彩
  • 原文地址:https://www.cnblogs.com/softidea/p/5675466.html
Copyright © 2020-2023  润新知