Java EE应用程序上的会话处理

SLM*_*SLM 5 java session servlets

我正在开发一个系统来处理客户商家系统收到的金融交易,它是我们从供应商处购买的现有系统的替代品.客户端界面应从我们的系统调用用户身份验证和事务处理屏幕.

系统功能如下,

  1. 从商家的站点接收输入参数
  2. 验证它
  3. 验证用户(用户在我们的系统中注册,我们应该调用我们的登录屏幕)
  4. 流程交易
  5. 返回商家的状态回复

一个响应被接收客户端应该从会话中的值验证事务数据.

系统概述可描述如下,

在此输入图像描述

(点击此处查看完整尺寸的图片)

我的问题是,一旦我们响应客户端,客户端就无法保留会话.但是我们从供应商那里购买的系统可以实现相同的功能(我们没有这个的源代码来分析内部编码结构).我希望我们对客户做出回应的方式有问题.

我怎样才能克服这个问题?

我们使用的是Java 1.4.2,Websphere应用服务器

Bal*_*usC 6

有许多事情可以使会话消失.我建议跟踪它们并验证是否有任何问题.如果您了解会话的工作方式,这将更容易做到.

  • 会话已超时.这通常默认为30分钟.这是可以配置的,您可以<session-timeout>web.xml其中指定超时(以分钟为单位).您可以HttpSessionListener使用记录器实现跟踪会话创建和销毁.

  • 会话被强制失效.这在代码调用时发生HttpSession#invalidate().这也是可跟踪的HttpSessionListener.

  • 会话cookie已经消失.会话由cookie支持.如果已创建会话,则服务器将添加Set-Cookie具有会话ID 的标头.客户端应该在Cookie标头中指定的(上下文)路径上的所有后续请求中将相同的cookie发送回头Set-Cookie.这可以在浏览器内置Web开发人员工具集的HTTP流量监视器("网络"选项卡)中跟踪(按Chrome/Firefox23 +/IE9 +中的F12).可以在同一个cookie域中访问所有Web应用程序的Cookie.此外,如果ServletC2在不同的webapp上下文上运行ServletC1,那么它将不会使用相同的会话.此外,如果"服务器"web应用程序在同一个域上运行,那么它理论上可以清除"客户端"Web应用程序的所有cookie.

  • 客户端不支持cookie.精心设计的Web应用程序使用URL重写jsessionid来跟踪同一Web应用程序上的请求之间的无Cookie客户端.但是,当重定向回第一个Web应用程序时,第二个Web应用程序必须执行相同的操作.