序列化保存session

session id 是由服务器在客户端连接后自动分配的。当服务端重启后,如果没有保存session信息,则当已连接的客户端再次发送请求到服务器时,由于session id已失效,服务器会为每个客户端重新分配一个新的session id.

如何让session在服务器重新启动后保持有效呢?可以在服务器关闭之前序列化保存session到文件中,然后在重启服务器后,从指定文件中反序列化session
Tomcat+jsp开发环境为例:
1、修改server.xml配置

 <!-- Session保存 -->
  <Context path="/examples" docBase="D:\examples_web">
    <Manager className="org.apache.catalina.session.PersistentManager">
	 debug=0 saveOnRestart="true"
	 maxActiveSession="-1" minIdleSwap="-1"
	 maxIdleSwap="-1" maxIdleBackup="-1"
	 <Store className="org.apache.catalina.session.FileStore" directory="d:\temp"/>
	 </Manager>
  </Context>
-->

<Manager>元素是专门用于配置session管理操作的。<Manager>中每个属性作用如下:

  • classNamesession的管理器操作类。
  • debug: session管理器的跟踪级别。
  • saveOnRestart:配置服务器重新启动前对session的处理操作。 true在容器关闭前将有效的session保存,重启后重新载入; false不保存。
  • maxActiveSession: 活动的session的最大数量。如果为-1则表示不设限,超过最大限制时,session会被保存到Session Store中.
  • maxIdleSwap:一个session不活动的最短时间,单位为秒。-1代表不受限制,超过则将session对象转移到Session Store中。
  • maxIdleBackup:session最长时间,单位为秒。-1代表不受限制,超过该时间会将session对象备份到Session Store中,但该session仍存在于内存中。
  • <Store>元素:定义实现持久化session的操作类及指定的文件存放位置。
  • 待续
nginx+tomcat7+session共享 kryo序列化所需要包 1.将上面所提到的包全部拷贝到tomcat的lib下(三台tomcat都需要) 2.修改每台tomcat的conf目录下得context.xml文件或者server.xml文件,在其中加入如下任意一段代码(注意:当使用多台tomcat时,一定要使用non-sticky模式): <Context> ... <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211" sticky="false" sessionBackupAsync="false" lockingMode="uriPattern:/path1|/path2" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" /> </Context> Sticky 模式:tomcat session 为 主session, memcached 为备 session。Request请求到来时, 从memcached加载备 session 到 tomcat (仅当tomcat jvmroute发生变化时,否则直接取tomcat session);Request请求结束时,将tomcat session更新至memcached,以达到主备同步之目的。下面是sticky模式时响应的流程图(图片来源网络): sticky模式 Non-Sticky模式:tomcat session 为 中转session, memcached1 为主 sessionmemcached 2 为备session。Request请求到来时,从memcached 2加载备 session 到 tomcat,(当 容器 中还是没有session 则从memcached1加载主 session 到 tomcat, 这种情况是只有一个memcached节点,或者有memcached1 出错时),Request请求结束时,将tomcat session更新至 主memcached1和备memcached2,并且清除tomcat session 。以达到主备同步之目的,如下是non-sticky模式的响应流程图:(图片来源网络)。 non-sticky
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值