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>
分享到:
相关推荐
码头Redis会议一个使用Redis作为后端的Jetty 9.4.x SessionDataMap实现。 从。 还Apache许可的的会话序列化代码使用MIT许可的Jedis作为Redis的客户端。
如何序列化会话(Session) 如何重定向或移动应用(Context) 如何让一个应用响应一个特定端口 使用JNDI 使用JNDI 在JNDI中配置数据源(DataSource) 内嵌Jetty服务器 内嵌Jetty教程 内嵌Jetty的HelloWorld教程 内嵌...
jetty-nosql-memcached-kryo.zip,jetty的会话管理器impl,用于在memcached上存储带有kryo序列化的会话。memcached session manager for jetty(基于jetty nosql);使用kryo序列化
除了基础的会话存储,Jetty Nosql Memcached还提供了丰富的定制选项,例如会话超时策略、序列化机制、故障恢复机制等,以满足不同应用场景的需求。此外,项目还提供了详尽的测试用例,帮助开发者理解和验证其功能。 ...
1. session数据序列化问题,即如何有效存储和传输会话数据; 2. sessionsticking问题,是指确保用户在访问期间一直被分配到同一个服务器节点; 3. 跨域跨应用session共享问题,是如何处理不同域名或不同应用间会话...
如果某些对象不支持序列化,你可能需要利用Terracotta DSO来定制Web会话的处理方式。 接下来,我们将详细讨论安装Terracotta Sessions JAR的步骤: 1. **选择正确的JAR文件**:为了保持与你的Terracotta版本兼容,...
总的来说,`msm集群session共享`结合了`msm-kryo-serializer`的高效序列化能力和Tomcat的集群特性,提供了在分布式环境中维持用户会话一致性的重要手段。理解并正确配置这个过程是构建高可用Web服务的关键步骤之一。
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 ID的生成、数据的序列化与反序列化,以及超时机制。 **5. 实例:使用Session进行状态管理** 以下是一个简单的Java Servlet示例,展示了如何...
3. **序列化库**:由于Session对象是Java对象,它们需要序列化才能存储在Memcached中。通常,`geronimo-annotation_x.x.x.jar`,`geronimo-jta_x.x.x.jar`,`geronimo-servlet_x.x_x.jar`等库可能被用作支持序列化的...
- Hessian和protobuf作为序列化协议的区别与选择 -Dubbo的集群策略,如Failover、Failfast、Failsafe、Loadbalance等 2. **Spring Boot**:Spring Framework的简化版,旨在简化Spring应用程序的初始搭建以及开发...
- JSON序列化和反序列化,通常使用Jackson或Gson库,便于前后端交互。 3. **数据库集成** - SpringData JPA提供了对ORM框架(如Hibernate)的高级抽象,简化了数据库操作。 - 数据库连接池,如HikariCP或Druid,...
- 使用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 | ...
- JSON格式的数据交换,利用Jackson库进行JSON序列化和反序列化。 5. **前端技术**: - Thymeleaf、FreeMarker或Mustache:这些可能是用于模板引擎,生成动态HTML页面。 - AJAX:用于前后端异步通信,提高用户...
- 可序列化。 #### 六、MVC 设计模式 - **定义**: MVC(Model-View-Controller)是一种软件架构模式,用于分离数据模型、用户界面和控制逻辑。 - **组成部分**: - **Model (模型)**: 负责管理应用程序的数据逻辑...
Action的结果可以通过JSON或AMF(Action Message Format)进行序列化和反序列化,实现数据的高效传输。 六、部署与测试 最后,将项目部署到应用服务器,如Tomcat或Jetty,并通过Flex客户端发送请求,验证Struts2 ...
- I/O流:字节流、字符流,缓冲流,对象序列化。 2. **JSP(JavaServer Pages)**: - JSP元素:指令(taglib, page, include),动作(jsp:include, jsp:forward, jsp:param)。 - JSP内置对象:request、...
它们可序列化,具有默认构造函数,以及getter和setter方法,便于JSP页面访问和操作。 **5. 数据库连接与JDBC** 电子商务系统通常需要与数据库交互,如MySQL、Oracle等。Java Database Connectivity(JDBC)提供了一...