jakarta-ee - 检索 Websphere 集群上的完整 JSESSIONID

标签 jakarta-ee websphere cluster-computing jsessionid

在集群 Websphere 环境中,我使用以下代码检索当前 HTTP 请求的 JSESSIONID:

HttpServletRequest servletRequest = ...;
servletRequest.getSession().getId();

从这段代码中,我得到了标识符,如下所示:z84d621pxY1VChlK_0eEgFZ

然后,如果我检查浏览器上的 cookie,我会看到 JSESSIONID 包含上述 ID,但还包含其他信息,例如0000z84d621pxY1VChlK_0eEgFZ:18fjt9t1u

令我惊讶的是 HttpServletRequest.getSession().getId() 没有给我正确的标识符。

请注意,如果我使用 Tomcat 进行测试,我总是得到相同的值。

我应该如何获取完整的 JSESSIONID 值?

最佳答案

它为您提供了正确的标识符 - session 标识符。其余部分是与 WebSphere 内部相关的部分。 WebSphere session cookie 由 3 部分组成:

  • 纪元编号
  • session ID
  • 克隆 ID

网络容器使用纪元号(前四位数字)来确保缓存的 session 不会过时。

session ID - 是实际的 session 标识符,它允许容器找到用户 session

克隆 ID - 由与 Web 服务器一起安装的 WebSphere 插件使用,将请求转发到保存与 session 关联相关的 session 数据的服务器。

为什么你需要其他部件?它们不识别 session ,并且可能在 session 生命周期内发生变化。

更新
您可以使用 cookie api 获取完整的 session ID:

Cookie cookies[] = request.getCookies(); 
 for(int i = 0; i< cookies.length; i++) {
    out.println(cookies[i].getName() + " " +cookies[i].getValue()+  " <br>" );
}
// output:
JSESSIONID 00002ikOjIY63tLqbF-6OF0QxL8:-1 

关于jakarta-ee - 检索 Websphere 集群上的完整 JSESSIONID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25141894/

相关文章:

session - 如果我使用 J2EE session ,我是否需要 ColdFusion session ?

Java Restful Web 服务 404 错误

java - JVM JIT 编译器如何优化 "duplicated"Java 代码?

mysql - log4j 记录到数据库(在集群中)

redis - 如何测试redis集群

web-services - 在 CXF JAX-WS 单向方法调用中获取客户端 IP 地址的可靠方法

JavaEE : Which is the good way to find an entity?

在 Jenkins 上解析 Groovy 脚本时出现 java.lang.StackOverflowError

import - Websphere Application Server 导入设置

c++ - 使用 sge 集群在 Matlab 下运行 C++ 代码?