我有一个通过 http/s 接收请求的 Java EE 应用程序。请求不包含任何 cookie 或 jsessionid 请求参数。
在请求有效负载中,我可以找到一个字符串“sessionid”,它应该允许我将该请求关联到一个 HttpSession。我已经设法实现了一种机制,可以在内存中存储 session 映射,但在集群环境中(很容易)无法扩展。
将请求关联到 HttpSession 的标准 Java EE 机制基于 cookie 或 URL 重写,这对我来说不可用,因为我不控制发送请求的第 3 方。此外,HttpServletRequest 对象没有 setSession() 方法。
有没有直接的方法将请求关联到 HttpSession,而不依赖于特定的 Java EE 服务器或某些分布式缓存?
最佳答案
一些声明:
- 第 3 方客户端不符合 HTTP 规范,那不是你的问题
- 如果您需要自定义机制,则应实现所有机制。也就是说,不要依赖 HttpSession - 创建一个
Map<String, Object>
对于每个 sessionId 并自己支持 - 任何其他解决方案都需要将您的代码插入容器(对于 tomcat,可能是 Valve),但没有标准解决方案。
关于java - 如何根据请求有效负载将请求与 Java EE 应用程序中的 HttpSession 相关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9194181/