【问题标题】:Android Session getting lost in IBM Websphere ServerAndroid Session 在 IBM Websphere Server 中丢失
【发布时间】:2015-04-19 08:40:58
【问题描述】:

每当我从 android 设备点击登录页面时,都必须创建并维护一个会话,直到用户点击注销按钮。但 IBM Websphere Servers 似乎存在一个奇怪的问题。我能够登录成功,但是当我尝试请求其他一些数据时,会话从服务器中丢失了,在 Apache TomCat 上运行的服务器并非如此 .. 在 iOS 设备中也可以正常工作!

示例: 1. 用户登录 -> 为该用户创建会话 2. Android App 以 1 秒的间隔连续访问服务器 3.用户注销->用户注销成功

在 Apache TomCat 的情况下此流程正常,但在第 2 步的 Websphere 的情况下..会话丢失,因此用户甚至无法注销

可能是什么问题?服务器端有什么我可能会丢失的吗?还是 websphere 有兼容性问题?

【问题讨论】:

  • 您是在 Android 上的 Chrome 中执行此操作吗?从自定义应用程序的 WebView 中?经过身份验证的会话是否可以在其他设备或平台上运行?您的日志中是否有任何错误?
  • 它是一个没有 webview 的自定义 android 应用程序,因为我只需要一组数据(如字符串),服务器会给我,我正在使用 httpclient 向服务器发出请求......一切都适用于 Apache Tomcat,但是当我切换到 IBM Websphere ..在错误日志中我看到,会话变为空 .. 系列事件 -> 1. 我的应用程序点击登录页面 -> 服务器回复成功 2. 我的应用程序点击数据页面 -> 服务器在第 1 次点击 3 时回复适当的数据。我的应用程序第 2 次点击数据页面 - > 这里我在 Websphere 中获得会话空值,在 iOS 设备中,Apache 和 IBM Websphere 一切正常
  • 您是如何处理会话信息的?你在通话之间保留你的cookie吗?请参阅此其他 SO 以了解实施/推理:stackoverflow.com/a/6454516/940217
  • 我已经以相同的方式实现了.. WebSphere 仍然没有运气.. Apache Tomcat 的会话处理很好.. 当我将我从 tomcat 获得的响应头与 websphere 的响应头进行比较时..我注意到的唯一区别是,如果是 websphere,则在 JSESSIONID 中附加了“:-1”
  • -1 不应该是问题,如果您正在比较响应标头 - 是一系列事件的会话 ID?您写过关于登录的文章,您是在使用 WebSphere 并提供安全性,还是您的自定义解决方案?您是否有一台服务器或场/集群并进行任何负载平衡?

标签: android session tomcat websphere


【解决方案1】:

这个问题需要分两部分解决

  1. 安卓端

    Android HttpPost 默认不发送必要的 headers ,所以我们需要显式添加 headers ,其中最重要的是 JSESSIONID 当您使用 Websphere Servers 处理 android 的会话管理时.. 您所要做的就是获取来自服务器响应的 JESSIONID 并将其附加到您向服务器发出的任何进一步请求。

  2. 网络圈

Websphere需要设置重要属性,可以通过以下步骤实现:

一个。打开管理控制台。

b.选择服务器 > 应用程序服务器 > Server_Name > 服务器 基础架构 > Java 和进程管理 > 进程定义 > Java 虚拟机 > 自定义属性 > 新建。

c。为 JVM 添加新的自定义属性以重用 sessionId: 系统属性名称:HttpSessionIdReuse 系统属性值:true

d。保存更改并重新启动应用程序服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2015-06-07
    • 1970-01-01
    • 2014-09-10
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多