tomcat 使用redis 管理session

来源:互联网 发布:常用sql注入代码 编辑:程序博客网 时间:2024/06/10 08:40

  


                在集群环境下, session的管理是一个需要特别注意的地方. 

                tomcat 集群环境可采用一下集中方式实现session管理 .

                  1,  session复制, 即将server1 上的session复制一份放入server2,这样server1,server2上都有相同的session。

                         问题,复制session会存在性能问题,  最近在本机上做了一下测试,如果采用jmeter进行测试, 请求发送的速度高于session的复制速度,导致session共享失败.

                  2, 将session放入缓存服务器上(redis,memcached), 这种方式已经有完整的解决方案 ,相关可查看

                               redis : https://github.com/jcoleman/tomcat-redis-session-manager

                               memcached:  https://code.google.com/p/memcached-session-manager/

                        因为本项目的采用的缓存服务器为redis,因此采用redsi来管理session。

                      

                          配置方式如下:

                                1,将jar防止在${tomcat path}/lib下: 

                                     相关jar 为  tomcat-redis-session-manager-1.2-tomcat-6.jar  ,   jedis-2.2.1.jar   ,   commons-pool-1.3.jar

                                2,修改tomcat的配置文件信息

                                      ${tomcat path}/conf/context.xml   

                                        添加 <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"/>
<Manager className="com.radiadesign.catalina.session.RedisSessionManager" database="0" host="localhost" maxInactiveInterval="60" port="6379"/>


                                启动tomcat ,出现日志信息

                          一月 27, 2014 4:19:36 下午 com.radiadesign.catalina.session.RedisSessionManager start
                         INFO: Attached to RedisSessionHandlerValve
                         一月 27, 2014 4:19:36 下午 com.radiadesign.catalina.session.RedisSessionManager initializeSerializer
                         INFO: Attempting to use serializer :com.radiadesign.catalina.session.JavaSerializer
                        一月 27, 2014 4:19:36 下午 com.radiadesign.catalina.session.RedisSessionManager start


          以上凡是与http server没有任何的关系,如果采用的http server,可使用http sever的session 共享方式. 

          例如 nginx, 可采用ip_hash等方式实现。

                    

0 0
原创粉丝点击