`
weifly
  • 浏览: 238838 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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集群配置教程 教程。

分享到:
评论

相关推荐

    jetty-redis-sessions:使用Redis的Jetty 9.4.x的SessionDataMap实现

    码头Redis会议一个使用Redis作为后端的Jetty 9.4.x SessionDataMap实现。 从。 还Apache许可的的会话序列化代码使用MIT许可的Jedis作为Redis的客户端。

    Jetty中文手册

    如何序列化会话(Session) 如何重定向或移动应用(Context) 如何让一个应用响应一个特定端口 使用JNDI 使用JNDI 在JNDI中配置数据源(DataSource) 内嵌Jetty服务器 内嵌Jetty教程 内嵌Jetty的HelloWorld教程 内嵌...

    scala-stm_2.10.0-M7-0.6.zip

    jetty-nosql-memcached-kryo.zip,jetty的会话管理器impl,用于在memcached上存储带有kryo序列化的会话。memcached session manager for jetty(基于jetty nosql);使用kryo序列化

    pool-enhanced-2.0.0.zip

    除了基础的会话存储,Jetty Nosql Memcached还提供了丰富的定制选项,例如会话超时策略、序列化机制、故障恢复机制等,以满足不同应用场景的需求。此外,项目还提供了详尽的测试用例,帮助开发者理解和验证其功能。 ...

    bboss会话共享培训文档

    1. session数据序列化问题,即如何有效存储和传输会话数据; 2. sessionsticking问题,是指确保用户在访问期间一直被分配到同一个服务器节点; 3. 跨域跨应用session共享问题,是如何处理不同域名或不同应用间会话...

    Web Sessions Installation .docx

    如果某些对象不支持序列化,你可能需要利用Terracotta DSO来定制Web会话的处理方式。 接下来,我们将详细讨论安装Terracotta Sessions JAR的步骤: 1. **选择正确的JAR文件**:为了保持与你的Terracotta版本兼容,...

    msm集群session共享

    总的来说,`msm集群session共享`结合了`msm-kryo-serializer`的高效序列化能力和Tomcat的集群特性,提供了在分布式环境中维持用户会话一致性的重要手段。理解并正确配置这个过程是构建高可用Web服务的关键步骤之一。

    session共享jar包

    6. `msm-kryo-serializer-1.6.5.jar`:这是Memcached Session Manager的一个Kryo序列化模块,它扩展了上述的`memcached-session-manager-1.6.5.jar`,提供了使用Kryo进行Session序列化的功能。 7. `memcached-...

    session.会话实例源码

    源码分析可以让我们了解Session是如何在内部管理这些操作的,包括Session ID的生成、数据的序列化与反序列化,以及超时机制。 **5. 实例:使用Session进行状态管理** 以下是一个简单的Java Servlet示例,展示了如何...

    session和memcached共享需要的jar

    3. **序列化库**:由于Session对象是Java对象,它们需要序列化才能存储在Memcached中。通常,`geronimo-annotation_x.x.x.jar`,`geronimo-jta_x.x.x.jar`,`geronimo-servlet_x.x_x.jar`等库可能被用作支持序列化的...

    面试专题-面试人员必看-微服务架构面试专题系列:Dubbo+Spring Boot+Spring Cloud.rar

    - Hessian和protobuf作为序列化协议的区别与选择 -Dubbo的集群策略,如Failover、Failfast、Failsafe、Loadbalance等 2. **Spring Boot**:Spring Framework的简化版,旨在简化Spring应用程序的初始搭建以及开发...

    基于springboot的美食分享管理平台(部署文档+表结构文档) Javaee项目,springboot项目

    - JSON序列化和反序列化,通常使用Jackson或Gson库,便于前后端交互。 3. **数据库集成** - SpringData JPA提供了对ORM框架(如Hibernate)的高级抽象,简化了数据库操作。 - 数据库连接池,如HikariCP或Druid,...

    【Java毕业设计】咖咖商城(kaka-shop)是一个基于 SpringBoot 开发的标准 Java Web 项.zip

    - 使用JSON格式进行数据交换,SpringBoot的`@ResponseBody`和`@RequestBody`注解帮助处理HTTP请求和响应的序列化和反序列化。 12. **测试与调试**: - SpringBoot支持单元测试和集成测试,`@SpringBootTest`、`@...

    单点登录源码

    Protobuf & json | 数据序列化 | [https://github.com/google/protobuf](https://github.com/google/protobuf) Jenkins | 持续集成工具 | [https://jenkins.io/index.html](https://jenkins.io/index.html) Maven | ...

    基于Springboot的实习管理系统(有报告) Javaee项目,springboot项目

    - JSON格式的数据交换,利用Jackson库进行JSON序列化和反序列化。 5. **前端技术**: - Thymeleaf、FreeMarker或Mustache:这些可能是用于模板引擎,生成动态HTML页面。 - AJAX:用于前后端异步通信,提高用户...

    java web开发

    - 可序列化。 #### 六、MVC 设计模式 - **定义**: MVC(Model-View-Controller)是一种软件架构模式,用于分离数据模型、用户界面和控制逻辑。 - **组成部分**: - **Model (模型)**: 负责管理应用程序的数据逻辑...

    flex与struts2整合

    Action的结果可以通过JSON或AMF(Action Message Format)进行序列化和反序列化,实现数据的高效传输。 六、部署与测试 最后,将项目部署到应用服务器,如Tomcat或Jetty,并通过Flex客户端发送请求,验证Struts2 ...

    java,j2ee面试题

    - I/O流:字节流、字符流,缓冲流,对象序列化。 2. **JSP(JavaServer Pages)**: - JSP元素:指令(taglib, page, include),动作(jsp:include, jsp:forward, jsp:param)。 - JSP内置对象:request、...

    Java 开发--基于JSP电子商务系统?(论文).rar

    它们可序列化,具有默认构造函数,以及getter和setter方法,便于JSP页面访问和操作。 **5. 数据库连接与JDBC** 电子商务系统通常需要与数据库交互,如MySQL、Oracle等。Java Database Connectivity(JDBC)提供了一...

Global site tag (gtag.js) - Google Analytics