博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx+tomcat+redis完成session共享
阅读量:6281 次
发布时间:2019-06-22

本文共 4265 字,大约阅读时间需要 14 分钟。

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

nginx安装:

redis安装:

准备两个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]   
 
  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]   
 
  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]   
 
  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]   
 
  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://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.57\lib目录下,同时将tomcat-juli.jar放在apache-tomcat-7.0.57\bin目录下

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

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

    http://download.csdn.net/detail/qinxcb/8279761

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

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

 

你可能感兴趣的文章
几个smarty小技巧
查看>>
Cocos2d-x3.2 Grid3D网格动作
查看>>
Java (for循环综合应用)
查看>>
NodeJs——(10)REST风格的路由规则
查看>>
软件可扩展性:来自星巴克的经验
查看>>
Java Cache系列之Guava Cache实现详解
查看>>
深入Log4J源码之LoggerRepository和Configurator
查看>>
System V 消息队列—复用消息
查看>>
vi常用快捷键
查看>>
Code Jam 2010 Round 1A Problem A
查看>>
C语言柔性数组
查看>>
iOS学习之flappyBird游戏的实现
查看>>
Cocos2D v2.0至v3.x简洁转换指南(五)
查看>>
springMVC4(8)模型数据绑定全面分析
查看>>
设计模式 - 适配器
查看>>
CSS之可折叠导航
查看>>
淘宝美工设计师细说何为天猫透明背景
查看>>
【B/S学习总结】我的第100篇CSDN博客
查看>>
[Hadoop]chukwa与ganglia的区别
查看>>
数据挖掘工具分析北京房价 (一) 数据爬取采集
查看>>