`
wade6
  • 浏览: 274174 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

webx3中的session框架

 
阅读更多

 

关于webx3的session

       webx3中实现了一个session框架,可以通过webx.xml中的设置将session保存在不同的地方,常用的有服务器内存和cookie;还可以将session的不同部分分别保存到不同的地方。

 

session框架

 

       session ID是唯一标示,一般将其保存在cookie中,这样相同cookie值的请求都看作是同一个session的请求。

       session的生命周期:第一个请求时创建;在访问期间可以不断地更新;超过配置的最大不活动时间就会结束,还可以通过调用session.invalidate()方法,直接清除session的所有内容;

       Session Store是session框架中最核心的部分,定义了session保存的位置,可以设置多个store,这样就可以将session不同的部分保存在不同的地方。

       在session框架中,有一个重要的特殊对象,用来保存session生命期的状态。这个对象叫作session model。

       Session Model是用来记录当前session的生命期数据的,例如:session的创建时间、最近更新时间等。

SessionModelEncoder

       默认情况下,SessionModel对象将被转换成一个JSON字符串,然后这个字符串将被保存在某个session store中;读取时需要解码成SessionModel对象。

       默认实现为:

                    <session-model-encoders>

                           <model-encoders:default-session-model-encoder />

                    </session-model-encoders>

       Session Interceptor拦截器的作用是拦截特定的事件,甚至干预该事件的执行结果。

Cookie Store

       Cookie Store的作用,是将session对象保存在客户端cookie中。Cookie Store减轻了服务器维护session数据的压力,从而提高了应用的扩展性和可用性。

       但是读写cookie比较麻烦,还要在代码中设置很多参数:domain、path、httpOnly...等,所以通过操作HttpSession,session框架就帮我们读写cookie了(那些参数在配置文件里配置就ok)。webx主张把一切对cookie的读写,都转换成对session的读写。

Session Encoders

       Session里保存的是Java对象,而cookie中只能保存字符串。如何把Java对象转换成合法的cookie字符串(或者将字符串恢复成对象)呢?这就是Session Encoder所要完成的任务。详细见下面。

       Cookie Store需要依赖其它两个Request Contexts: <buffered>(将所有的输出到response.getWriter()或getOutputStream()的内容缓存在内存里,直到最后一刻才真正

输出到浏览器) 和 <lazy-commit>(拦截了response对象中引起提交的方法,将它们延迟到最后才执行。)

        Cookie Store分为多值和单值;

  •        多值Cookie Store是在一组cookie(如tmp0, tmp1, ...)中保存一组attributes的名称和对象。它所创建的cookie值,只有session框架自己才能解读,如<key,value>的形式。
  •        单值cookie store就是在一个cookie中仅保存一个值或对象,如<object>。

 

Session Encoders和Session Value Encoder

 

    这两个cookie store的结构是不一样的。因此解码的方法也不一样。单值的cookieStore使用Session Value Encoder解码;多值的cookieStore使用Session Encoder。

Session Encoders

       Session Encoder需要转换一组session attributes的key-values。Session框架提供了一种encoder的实现,编码的基本过程为:序列化、加密(可选)、压缩、Base64编码、URL encoding编码。

       保存session数据时,session框架将使用第一个encoder来将对象转换成cookie可接受的字符串;

       读取session数据时,session框架将依次尝试所有的encoders,直到解码成功为止。

       默认实现为:

                      <session-stores:encoders>

                             <session-encoders:serialization-encoder />

                      </session-stores:encoders>

 

Session Value Encoder

       session Value Encoder只转换sessionattribute的值。

       和SessionModelEncoder以及SessionEncoder类似,session框架也支持多个session valueencoders同时存在。

  •        保存session数据时,session框架将使用第一个encoder来将对象转换成cookie可接受的字符串;
  •        读取session数据时,session框架将依次尝试所有的encoders,直到解码成功为止。

       这种编码、解码方案可让使用不同session value encoders的系统之间共享cookie数据,也有利于平滑迁移系统。

       目前有两种基本的session value encoders实现。<simple-value-encoder>和<mappedvalues-encoder>

 

Simple Memory Store

SimpleMemoryStore是最简单的session store。它将所有的session对象都保存在内存里面。这种store不支持多台机器的session同步,而且也不关心内存是否被用尽。因此这种简单的store一般只应使用于测试环境。

<stores>

<session-stores:simple-memory-store id="simple" />

</stores>

 

分享到:
评论
2 楼 wade6 2013-01-25  
cdxueq 写道
嗯。。记得曾经我看过淘宝session的代码。。应该是在一个webx.xml的文件里配置的,开源配置。。只是我不记得原本session那个项目叫什么名字了呢?

是的,webx.xml是webx框架自己定义的配置文件
1 楼 cdxueq 2013-01-21  
嗯。。记得曾经我看过淘宝session的代码。。应该是在一个webx.xml的文件里配置的,开源配置。。只是我不记得原本session那个项目叫什么名字了呢?

相关推荐

    Webx及框架简介

    在Webx框架中,主要由以下几个关键组件构成: 1. **控制器(Controller)**:控制器是处理HTTP请求的主要组件,它接收来自用户的请求,根据请求内容调用相应的业务逻辑,并将结果返回给用户。Webx中的控制器通常由...

    webx框架指南

    在Webx框架的总体介绍中,首先需要理解的是框架的本质,即它所承担的角色和它在应用架构中的位置。Webx框架设计理念强调基础框架的构建,以及通过层次化的设计思路来简化应用开发。Webx的层次结构清晰,可以分成三个...

    淘宝框架 Webx3资料

    - **SpringExt**:SpringExt是Webx3中一个重要的组成部分,主要用于简化Spring框架的配置过程。它引入了XML Schema的概念,通过扩展点(Configuration Point)和捐献(Contribution)机制实现了对Spring配置文件的自动化...

    webx3文档——web开发

    Webx框架的基础设施服务部分主要涉及ResourceLoading服务指南,涵盖了资源的概念、表示、访问、遍历以及如何在Spring框架中利用ResourceLoader机制来装载资源。该部分还包括了SpringResourceLoader的缺点以及如何...

    webx3框架指南PDF教程附学习Demo

    该文档为官方webx框架文档,对webx进行了全面的讲解,非常实用,并附学习的Demo 为什么要用Webx而不是其它的开源框架? 现在有很多Java的Web框架可供选择,并且它们也都是免费的。例如: • Struts • Webwork • ...

    webx3 PDF(阿里巴巴 前端web框架)

    ### Webx3 PDF(阿里巴巴前端Web框架):深入解析与技术要点 #### 引言 Webx是一款由阿里巴巴推出的前端Web框架,旨在提供一个高效、灵活且可扩展的基础架构来支持大规模Web应用的开发。本文章将从Webx框架的核心...

    Webx3_Guide_Book.pdf

    本知识点将详细介绍Webx框架的核心理念、架构层次、使用优势以及在实际开发中的应用方法。 Webx框架的历史可以追溯到2010年,当时设计者MichaelZhou出版了《Webx框架指南》,详细介绍了Webx框架的设计初衷和使用...

    WEBX3.0框架指南(PDF版)

    ### WEBX3.0框架指南知识点汇总 #### 引言 **WEBX3.0框架**是一款基于Java Servlet API的通用Web开发框架,在阿里巴巴集团内部得到了广泛应用。此框架旨在简化Web应用的开发与维护过程,并提供了强大的功能支持,...

    webx_guide

    在讨论Webx框架之前,先来看看Webx的核心特点以及为何在众多开源框架中选择Webx。Webx历史的探讨为我们提供了框架的背景,从其起源到它演变成一个成熟的框架的过程。提到使用Webx而不是其他框架的理由,关键点在于...

    Webx3 Guide Book pdf

    **WebxTurbine**是Webx框架中的另一个重要组件,专注于页面的处理和渲染。 ##### **4.1 设计理念** - **页面驱动**:强调页面是应用程序的核心,所有的交互都围绕页面展开。 - **约定胜于配置**:通过预定义的约定...

    最简单的webx代码

    3. **会话管理(Session Management)**:WebX提供了强大的会话管理功能,可以跨页面跟踪用户状态,确保安全性和一致性。 4. **权限控制(Access Control)**:WebX支持细粒度的权限控制,允许开发者定义用户角色和...

    **session and cookie

    文档可能包含了一个关于Web应用框架WebX如何使用Session和Cookie的示例。WebX是一个基于Java的开源MVC框架,它提供了内置的Session管理和Cookie操作支持。开发者可以通过WebX提供的API方便地创建、读取、更新和删除...

    IT系统架构概述.pdf

    随着技术的发展,2002年进入了中世纪阶段,阿里巴巴引入了EJB(Enterprise JavaBeans)服务,包括SLSB(Stateless Session Beans)和CMP(Container-Managed Persistence)。同时,Web服务器升级为Weblogic,Web层...

    199-淘宝网架介绍.pdf

    - **架构优化**:从WebLogic切换到Jboss,支持数据库分库,引入Spring框架代替EJB,并重构了Session框架。 - **新增组件**:TBStroe作为缓存框架,淘宝自建的CDN提高静态资源访问速度。 - **关键改进**:通过Spring...

    阿里大数据架构.pptx

    “中世纪”时期,阿里开始采用WebX模板技术和EJB(SLSB、CMP、DAO等),使用Weblogic作为EJB服务器,Apache作为Web服务器。这一阶段引入了Façade和Delegate模式来组织业务逻辑,但EJB的复杂性和重量级特性限制了...

    阿里巴巴中文站架构设计实践(何崚).pdf

    - **2005-2007年**:去EJB重构,使用Spring+iBatis+WebX框架,以及AntX等工具,底层架构涉及iSearch、消息队列+企业服务总线(MQ+ESB)、数据挖掘和CMS。 - **2008-2009年**:针对海量数据处理,引入Memcached集群、...

    淘宝系统架构介绍

    - **成熟阶段**(2007.12-至今):随着业务量的持续增长,淘宝在架构层面实现了更多的技术创新,包括应用透明伸缩、Session框架、高性能服务框架HSF、消息系统Notify等。 - **特点**:高度可扩展、高性能的服务框架...

    IT系统架构概述.pptx

    - **中世纪到工业革命**:采用Spring框架和分布式缓存,优化了架构的可扩展性和性能,同时减轻了对数据库的压力。 4. **设计理念** - **无状态Web应用**:通过cookie实现session,提高系统的横向扩展性。 - **...

Global site tag (gtag.js) - Google Analytics