我想在serlvet容器中使用基于cookie的HttpSession。所有会话数据都应存储在cookie中。这在servlet应用程序中似乎并不常见。在Rails(Session)和Playframework(Session)中,这种会话处理是默认的。为什么这种情况如此罕见?
具体来说,我需要一个JBoss EAP6的解决方案(没有会话范围的bean)。我发现了两个基于serlvet过滤器的实现:
- 无状态Servlet过滤器"此筛选器仍处于测试状态"2013年
- java无状态http会话没有使用参考,一年多没有提交。没有测试
你知道其他选择吗?
(如果可能的话,我不想讨论一般的利弊)
在Java EE中,将会话数据持久化在cookie中是不常见的。。。因为CCD_ 1是在所有servlet容器中实现的。
在cookie持久会话中,您有大小限制,并且必须使用签名数据来避免操作会话客户端。如果你想在会话中保留敏感信息,你必须对数据进行加密。并且所有会话数据都与每个请求和响应进行交换。这些限制随着HttpSession
而消失。
cookie持久会话的最高兴趣是,您可以拥有一个由多个服务器组成的服务器场,这些服务器可以响应任何请求,因为会话包含在请求中。但这可以在Java EE中通过在反向代理级别使用粘性会话来完成(因为几乎每个重要的数据中心都有反向代理):反向代理知道会话并将请求传递给持有会话的服务器。
一些JavaEE服务器甚至有共享会话的概念。
IMHO在Java中实现cookie持久会话并不是很困难,只是对于专业用途来说,它还不够重要。