博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Apache Tomcat 7设置redis作为session store
阅读量:5743 次
发布时间:2019-06-18

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

 //输出tomcat控制台日志

root@ubuntu:~# cd /usr/tomcat/apache-tomcat-7.0.47

root@ubuntu:/usr/tomcat/apache-tomcat-7.0.47# tail -f logs/catalina.out

 
 
 
一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响。 
可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息。 
1catalina.org.apache.juli.FileHandler.level = WARNING 
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
1catalina.org.apache.juli.FileHandler.prefix = catalina. 
将level级别设置成WARNING就可以大量减少日志的输出,当然也可以设置成OFF,直接禁用掉。 
一般日志的级别有: 
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value) 
 
 

在Apache Tomcat 7设置redis作为session store

redis已经有组件支持直接在tomcat7中设置下将redis作为tomcat默认的session存储器,下面介绍下配置过程

 

1.从http://redis.io/下载redis,按照redis服务端

  wget http://download.redis.io/redis-stable.tar.gz

  tar xvzf redis-stable.tar.gz

  cd redis-stable

  make

  

2.启动redis

  cd RedisDirectory/src

  ./redis-server --port 6379

  

3.从http://tomcat.apache.org/download-70.cgi下载tomcat7,按照tomcat7

 

4.从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 pool包,

将这几个jar包拷贝到tomcat7的lib目录下

其实这里是有坑的,不过你们比较幸运,我帮你先踩了。如果你全部下载最新版本的话,肯定启动不起来。我试了很久才匹配这些jar的版本。在附件中可以下载。声明一下我用jdk是1.7的

 

5.修改tomcat的conf下的context.xml文件,添加或者修改下面的配置

Java代码  
  1. <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />  
  2. <Manager className="com.radiadesign.catalina.session.RedisSessionManager"  
  3. host="localhost" <!-- optional: defaults to "localhost" -->  
  4. port="6379" <!-- optional: defaults to "6379" -->  
  5. database="0" <!-- optional: defaults to "0" -->  
  6. maxInactiveInterval="60" <!-- optional: defaults to "60" (in seconds) --> />  

 

  

6.重启tomcat后就可以看到session存储到redis上了。

 

 

 

------------------------------------------------------------------------------------------------

Possible Issues

There is the possibility of a race condition that would cause seeming invisibility of the session immediately after your web application logs in a user: if the response has finished streaming and the client requests a new page before the valve has been able to complete saving the session into Redis, then the new request will not see the session.

This condition will be detected by the session manager and a java.lang.IllegalStateException with the message Race condition encountered: attempted to load session[SESSION_ID] which has been created but not yet serialized.will be thrown.

Normally this should be incredibly unlikely (insert joke about programmers and "this should never happen" statements here) since the connection to save the session into Redis is almost guaranteed to be faster than the latency between a client receiving the response, processing it, and starting a new request.

If you encounter errors, then you can force save the session early (before sending a response to the client) then you can retrieve the current session, and call currentSession.manager.save(currentSession) to synchronously eliminate the race condition. Note: this will only work directly if your application has the actual session object directly exposed. Many frameworks (and often even Tomcat) will expose the session in their own wrapper HttpSession implementing class. You may be able to dig through these layers to expose the actual underlying RedisSession instance--if so, then using that instance will allow you to implement the workaround.

  •  (181.3 KB)

转载于:https://www.cnblogs.com/fx2008/p/4136055.html

你可能感兴趣的文章
在Lync 2013环境部署Office Web Apps
查看>>
微软大会Ignite,你准备好了么?
查看>>
读书笔记-高标管事 低调管人
查看>>
Master带给世界的思考:是“失控”还是进化
查看>>
用户和开发者不满苹果iCloud问题多多
查看>>
attrs.xml中declare-styleable 详解(用于自定义控件的属性)
查看>>
java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
查看>>
我的工具:文本转音频文件
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
C++入门读物推荐
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
面试中会遇到的正则题
查看>>
Spring之旅第八站:Spring MVC Spittr舞台的搭建、基本的控制器、请求的输入、表单验证、测试(重点)...
查看>>
数据结构与算法——常用排序算法及其Java实现
查看>>
你所不知的Webpack-多种配置方法
查看>>
React.js 集成 Kotlin Spring Boot 开发 Web 应用实例详解
查看>>
webpack+typescript+threejs+vscode开发
查看>>
python读excel写入mysql小工具
查看>>
如何学习区块链
查看>>