jetty-如何序列化会话

jetty中文文档:www.jettycn.com

 

 

如何序列化会话(Session)

Jetty >> howto >> 如何序列化会话(Session)

介绍

在重启Jetty后维护现有的会话有些时候是很有用的。HashSessionManager 支持此功能。如果启用了持久化特性,HashSessionManager将在关闭前保存所有现存的有效的会话到磁盘。在重新启动时,Jetty将恢复保存的会话。

启用持久化特性

SessionManager的作用正如其名称所示,它代表web应用程序管理会话的生命周期和状态。每个web应用程序必须有自己唯一的SessionManager实例。启用持久化特性和把HashSessionManager配置为web应用的SessionManager一样简单,只需告诉HashSessionManager在磁盘的那个位置存储会话:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  .
  .
  .
  <Set name="sessionHandler">
    <New class="org.eclipse.jetty.servlet.SessionHandler">
      <Arg>
        <New class="org.eclipse.jetty.servlet.HashSessionManager">
          <Set name="storeDirectory">your/chosen/directory/goes/here</Set>
        </New>
      </Arg>
    </New>
  </Set>
  .
  .
  .
</Configure>

提示 如果你想为多个web应用持久化会话:

  • 为每个web应用配置单独的HashSessionManager。
  • 为每个web应用指定不同的"storeDirectory"。

上面的例子使用了一个适用于org.eclipse.jetty.deploy.ContextDeployer 的配置文件,因此,你可能想看看Context Deployer 的功能指南。

延迟会话加载

你可能需要确保在servlet环境启动后才加载会话(默认情况下,Jetty急切的加载会话,这是做为容器启动的一部分的,但在此之前,它会初始化servlet环境)。例如,Wicket web框架要求servlet环境在会话被激活时可用。

设置SessionManager.setLazyLoad(true),Jetty将延迟加载会话,当它接收到要求会话的第一个请求时,或者会话回收线程第一次运行时,才会触发会话加载,以先发生的事件为准。下面是xml配置示例:

<Set name="sessionHandler">
  <New class="org.eclipse.jetty.servlet.SessionHandler">
    <Arg>
      <New class="org.eclipse.jetty.servlet.HashSessionManager">
        <Set name="lazyLoad">true</Set>
      </New>
    </Arg>
  </New>
</Set>

为Maven Jetty插件启用会话持久性

要为Maven Jetty插件启用会话持久性,像下面这样在<configuration>部分配置HashSessionManager:

<plugin>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>maven-jetty-plugin</artifactId>
  <version>6.1.6</version>
  <configuration>
    <scanIntervalSeconds>1</scanIntervalSeconds>
    <webAppConfig implementation="org.eclipse.jetty.plugin.Jetty6PluginWebAppContext">
      <contextPath>/foo</contextPath>
      .
      .
      .
      <sessionHandler implementation="org.eclipse.jetty.servlet.SessionHandler">
        <sessionManager implementation="org.eclipse.jetty.servlet.HashSessionManager">
          <storeDirectory>${basedir}/target/your/sessions/go/here</storeDirectory>
        </sessionManager>
      </sessionHandler>
      .
      .
      .
    </webAppConfig>
  </configuration>
</plugin>

其他资源

有关详细信息,请参阅基于数据库的Session集群配置教程 教程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值