【问题标题】:Disable HTTPSession for stateless web services [duplicate]为无状态 Web 服务禁用 HTTPSession [重复]
【发布时间】:2016-04-12 22:42:51
【问题描述】:

我想知道是否可以为仅处理 RESTful Web 服务的应用程序服务器禁用 HTTPSession

我不知道是否有专门设计用于处理微型 RESTful Web 服务的应用服务器或 servlet 容器。

我认为完全禁用会话概念将带来以下优势:

  • 更好的性能
  • 在会话中保存数据不存在破坏 RESTful Web 服务的无状态概念的风险
  • 类加载器加载的类更少
  • 会话中没有保存未使用的信息(例如会话 ID、会话状态)
  • 较少访问同步块(我认为至少在 Session 中,lastAccessedTime 的值会针对每个请求进行更新,这应该在同步块中完成)

如果没有应用程序服务器或 servlet 容器可以做到这一点:是否有任何其他 Java 引擎 可以处理微服务而无需创建类似于 HttpSession 的东西?

【问题讨论】:

  • 我编辑了问题,在最后添加了一个新请求。所以和其他的不一样。
  • 这只会通过询问一个非常模糊和广泛的次要问题来破坏问题。
  • 事实上安德烈斯用一个可能的引擎回答了这个问题。
  • 我相信您会在适当的时候看到错误并开始实际阅读您现在不想阅读的内容 - 这是其余的回复和可能的重复我标记了。

标签: java rest servlets restful-architecture httpsession


【解决方案1】:

您不能在 servlet 容器(如 Tomcat)上禁用 HttpSession。

也许Play framework 是实现您的设计的好方法。

【讨论】:

  • 谢谢,我去看看
【解决方案2】:

您不能完全禁用HttpSession

但您可以确保不会在您的应用程序中创建HttpSession。为此,请确保以下方法未被调用(您自己您正在使用的框架):


Microservices是一种架构设计原则。如果你想使用Spring,有一个guide you can follow

【讨论】:

  • 我调用了 request.getSession(false),如果没有其他请求完成,它也会返回一个会话。
  • 那么会话已经在别处创建了。其余服务是否嵌入在打开会话的应用程序中?
  • @DavideLorenzoMARINO 看看documentation如果createfalse并且请求没有有效的HttpSession,这个方法返回null .所以,我相信您的会话正在其他地方创建。你的框架不是为你做的吗?
  • 我再次尝试了一个更简单的示例,但没有创建会话。你@Cassio 是对的,谢谢
猜你喜欢
  • 2011-02-05
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 2016-01-28
  • 2011-07-23
  • 1970-01-01
  • 2018-09-10
  • 2018-03-02
相关资源
最近更新 更多