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

标签 java jakarta-ee servlets httpsession

我有一个通过 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/

相关文章:

java - 从多个线程中读取java "Queue",每个线程中包含所有对象

java - 如何使用 Dagger 2 注入(inject) pojo 依赖项?

java - request.getSession().getId() 与 request.getRequestedSessionId()

java - 使用 Java 忽略 SSL 证书错误

jsp - 如何查找 session 变量是否存在

java - 如何在代码中获取 Java SSL 连接的实际 block 密码 key 大小?

java - 在 Android 中将变量传递给新类

java - 使用生产者创建应用程序范围的类成员

java - 是否有必要测试我的 Java Servlet?

java - java中的GAE任务队列处理时间