如何根据请求有效负载将请求与Java EE应用程序中的HttpSession相关联?

Vic*_*scu 1 java servlets java-ee httpsession

我有一个Java EE应用程序,通过http/s接收请求.请求不包含任何cookie或jsessionid请求参数.

在请求有效负载中,我可以找到一个字符串"sessionid",它应该允许我将该请求与HttpSession相关联.我已经设法实现了一种在内存中存储会话映射的机制,但这在集群环境中不是(容易)可扩展的.

用于将请求关联到HttpSessions的标准Java EE机制基于cookie或URL重写,这对我来说是不可用的,因为我不控制发送请求的第3方.此外,HttpServletRequest对象没有setSession()方法.

有没有直接的方法将请求关联到HttpSession,而不依赖于特定的Java EE服务器或某些分布式缓存?

Boz*_*zho 5

一些陈述:

  • 第三方客户端不符合HTTP规范,这不是您的问题
  • 如果您需要自定义机制,则应实现所有这些机制.也就是说,不要依赖于HttpSession - Map<String, Object>为每个sessionId 创建一个并支持它
  • 任何其他解决方案都需要将代码插入容器(对于tomcat,可能是Valve),但没有标准解决方案.