应用会话和会话持久性 Weblogic session

使用会话和会话持久性

  以下部分描述如何设置和使用会话以及会话持久性:

  

  • HTTP 会话概述
  • 设置会话管理
  • 配置会话持久性
  • 用 URL 重写替换 Cookie
  • Servlet 会话跟踪

 

HTTP 会话概述

  通过会话跟踪,您可以跟踪用户在多个自身无状态的 servlet 或 HTML 页面上的进度。会话被定义为特定时间段内来自同一个客户端的一系列相关的浏览器请求。会话跟踪将一系列浏览器请求联结起来(可以将这些请求当作页面来考虑),这些请求整体上可能具有一定的含义,例如购物车应用程序。

设置会话管理

  默认情况下,WebLogic Server 设置为可以处理会话跟踪。无需设置以下任何属性即可使用会话跟踪。但是,配置 WebLogic Server 管理会话的方式是调整应用程序以获得最佳性能的关键部分。设置会话管理时,您需确定如下因素:

  

  • 预期访问 servlet 的用户的数量
  • 每个会话的持续时间
  • 每个用户的预期数据存储量
  • 向 WebLogic Server 实例分配的堆大小

 

  您还可以永久存储来自 HTTP 会话的数据。请参阅配置会话持久性 。

HTTP 会话属性

  通过在 WebLogic 特定的部署描述符 weblogic.xml 中定义各种属性,您可以配置 WebLogic Server 会话跟踪。有关会话特性的完整列表,请参阅 session-descriptor 。

  在以前的 WebLogic Server 版本中,引入了对 SessionID 格式的一个更改,以致某些负载平衡器丧失了保持会话粘滞性的能力。服务器启动标志 -Dweblogic.servlet.useExtendedSessionFormat=true 保留了负载均衡应用程序保持会话粘滞性所需要的信息。如果激活了 URL 重写功能,且启动标志设置为真,则扩展会话 ID 格式将属于 URL 的一部分。

会话超时

  您可以指定 HTTP 会话过期的时间间隔。会话过期时,将放弃会话中存储的所有数据。可以在 web.xml 或 weblogic.xml 中设置时间间隔:

  

  • 在 WebLogic 特定的部署描述符 weblogic.xml 中的 session-descriptor 元素中设置 timeout-secs 参数值。该值以秒为单位进行设置。有关详细信息,请参阅 session-descriptor 。
  • 在 J2EE 标准 Web 应用程序部署描述符 web.xml 中设置 session-timeout 元素。

 

配置 WebLogic Server 会话 Cookie

  客户端浏览器支持 cookie 时,WebLogic Server 使用 cookie 进行会话管理。

  默认情况下,WebLogic Server 用于跟踪会话的 cookie 设置为暂态,其生存期不会超过会话期间。用户退出浏览器时,cookie 丢失,会话结束。此行为主要用于会话,建议您以此方式使用会话。

  您可以在 WebLogic 特定部署描述符 weblogic.xml 中配置 cookie 的 session-tracking 参数。会话及 cookie 相关参数的完整列表位于 session-descriptor 中。

配置生存期超过会话期间的应用程序 Cookie

  要获得生存期更长的客户端用户数据,您可以编写自己的应用程序,通过 HTTP servlet API 在浏览器上创建和设置自己的 cookie。应用程序不应试图使用与 HTTP 会话关联的 cookie。您的应用程序可能会使用 cookie 以使用户从特定计算机自动登录,这样,您需要设置新的 cookie 以持续更长时间。请记住,只能从此特定客户端计算机发送 cookie。如果用户必须从多个位置进行访问,您的应用程序应该在服务器上存储数据。

  您不能直接将浏览器 cookie 的期限与会话时间长度关联起来。否则,如果 cookie 在其关联会话之前过期,则会话会变得孤立。而如果会话在其关联 cookie 之前过期,则 servlet 无法找到该会话。这种情况下,当调用 request.getSession(true) 方法时,将自动分配一个新会话。

  可以使用 weblogic.xml 部署描述符的会话描述符中的 cookie-max-age-secs 元素设置 cookie 的最大生命周期。请参阅 cookie-max-age-secs 。

退出和结束会话

  用户身份验证信息既存储于用户会话数据中,也存储于 Web 应用程序所定位的服务器或虚拟主机的上下文中。通常用于使用户退出的 session.invalidate() 方法仅使用户的当前会话失效,用户身份验证信息仍有效,且存储于服务器或虚拟主机的上下文中。而如果服务器或虚拟主机仅承载一个 Web 应用程序,则 session.invalidate() 方法实际上会使用户退出。

  针对多个 Web 应用程序使用身份验证时,有多种 Java 方法和策略可以使用。有关详细信息,请参阅退出和结束会话 。

使 Web 应用程序共享同一个会话

  默认情况下,Web 应用程序不共享同一个会话。如果您希望 Web 应用程序共享同一个会话,您可以在 weblogic-application.xml 部署描述符中配置应用程序级别上的会话描述符。要使 Web 应用程序共享同一个会话,请将 weblogic-application.xml 部署描述符中会话描述符中的 sharing-enabled 特性设置为 true 。请参阅 session-descriptor 中的“sharing-enabled”。

  应用程序级别上指定的会话描述符配置将替代在 Web 应用程序级别上为应用程序中所有 Web 应用程序指定的任何会话部署描述符配置。如果您在 Web 应用程序级别上将 sharing-enabled 特性设置为真,则将忽略该设置。

  如果您在 weblogic-application.xml 部署描述符中指定会话描述符,并将 sharing-enabled 特性设置为 true ,则应用程序中的所有 Web 应用程序将自动使用同一个会话实例启动,如以下示例所示:

  < xml version="1.0" encoding="ISO-8859-1" >

  <weblogic-application xmlns="<session-descriptor> <persistent-store-type>memory</persistent-store-type> <sharing-enabled>true</sharing-enabled> ... </session-descriptor> ... </weblogic-application>

配置会话持久性

  使用会话持久性永久存储 HTTP 会话对象中的数据,以便支持 WebLogic Server 群集之间的故障转移和负载平衡,应用程序存储 HTTP 会话对象中的数据时,数据必须是可序列化的。

  会话持久性有五种不同的实现方法:

  

  • 内存(单个服务器,非复制)
  • 文件系统持久性
  • JDBC 持久性
  • 基于 Cookie 的会话持久性
  • 内存中复制(跨群集)

 

  此处仅讨论前四项;内存中复制将在使用 WebLogic Server 群集 中的 HTTP 会话状态复制 中讨论。

  基于文件、JDBC 和 cookie 的会话持久性与内存(单服务器,非填充)会话持久性具有某些共同的属性。每个持久性方法具有其自己的一组可配置参数,如以下部分所讨论。这些参数是 weblogic.xml 部署描述符文件中 session-descriptor 元素的子元素。

不同类型的会话持久性的共有特性

  此部分描述基于文件的持久性和基于 JDBC 的持久性共用的参数。通过在 weblogic.xml 部署描述符文件中的 session-descriptor 元素中定义下列参数,您可以配置内存中保留的会话数量。以下参数仅适用于您使用会话持久性时:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值