在java中,管理会话数量和消除不需要的会话有哪些策略?

在java中,管理会话数量和消除不需要的会话有哪些策略?,java,servlets,session,Java,Servlets,Session,管理会话数量和消除不必要会话的一些策略是什么 或 我如何知道不再需要会话?您为什么要自己做这件事?您的web服务器或容器应该在不需要您干预的情况下自动处理此问题。您为什么要自己执行此操作?您的web服务器或容器应该在无需您干预的情况下自动处理此问题。在大多数Java web应用程序服务器中,都有一个组件为您处理会话(但您可以在必要时配置该组件并与之交互)。在Tomcat中,它是一个组件。在大多数Java web应用程序服务器中,有一个组件负责为您处理会话(但如果需要,您可以配置该组件并与之交互)

管理会话数量和消除不必要会话的一些策略是什么


我如何知道不再需要会话?

您为什么要自己做这件事?您的web服务器或容器应该在不需要您干预的情况下自动处理此问题。

您为什么要自己执行此操作?您的web服务器或容器应该在无需您干预的情况下自动处理此问题。

在大多数Java web应用程序服务器中,都有一个组件为您处理会话(但您可以在必要时配置该组件并与之交互)。在Tomcat中,它是一个组件。

在大多数Java web应用程序服务器中,有一个组件负责为您处理会话(但如果需要,您可以配置该组件并与之交互)。在Tomcat中,如果您真的需要它,您可以鼓励用户使用注销功能,但通常大多数人会忽略它

如果您真的需要它,您可以使用onUnload javascript事件来捕获一些用户导航到另一个站点时的事件。在这个问题中可以找到一些关于onUnload的一般信息,以及在哪些情况下它不起作用。丑陋的黑客排除链接到您自己的域名


同样,除非您真的需要它,否则请坚持配置应用服务器的会话处理。

如果您真的需要它,您可以鼓励用户使用注销功能,但通常大多数人会忽略它

如果您真的需要它,您可以使用onUnload javascript事件来捕获一些用户导航到另一个站点时的事件。在这个问题中可以找到一些关于onUnload的一般信息,以及在哪些情况下它不起作用。丑陋的黑客排除链接到您自己的域名


同样,除非您真的需要它,否则请继续配置应用服务器的会话处理。

servlet容器通常会使超时的会话无效并擦除。你真的一点也不需要担心。但是,您可以在
web.xml
中配置会话超时,如下所示:

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

30
该值以分钟为单位,默认值为30分钟。这意味着,当客户机长时间没有请求与会话关联的页面时,会话将无效

如果要限制同时打开的会话的数量,则需要分别在
sessionCreated()
sessionDestroyed()
上实现和执行递增/递减操作。如果出于某些模糊的原因,您想跟踪实际的
HttpSession
引用,请确保将它们存储在一个数据库中,以便在服务器内存中失效/取消引用时自动删除它们,否则会污染和溢出服务器内存


同样,您不应该担心会话的维护。让web容器完成它的任务,这是它的设计目标。

servlet容器通常会使超时的会话失效并擦除会话。你真的一点也不需要担心。但是,您可以在
web.xml
中配置会话超时,如下所示:

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

30
该值以分钟为单位,默认值为30分钟。这意味着,当客户机长时间没有请求与会话关联的页面时,会话将无效

如果要限制同时打开的会话的数量,则需要分别在
sessionCreated()
sessionDestroyed()
上实现和执行递增/递减操作。如果出于某些模糊的原因,您想跟踪实际的
HttpSession
引用,请确保将它们存储在一个数据库中,以便在服务器内存中失效/取消引用时自动删除它们,否则会污染和溢出服务器内存

同样,您不应该担心会话的维护。让web容器完成它的任务,它就是为之设计的

我需要使用什么策略来管理会话数量和消除不必要的会话

如果不需要,应用程序服务器会为您执行此操作。更准确地说,容器将
HttpSession
保留在内存中,直到相关用户在某个时间段内处于非活动状态,此时会话超时。此时,会话可以被垃圾收集。这意味着
HttpSession
对象在内存中至少保留默认配置超时值中指定的时间长度,除非您以编程方式删除它们。这通常是通过在调用方法的地方公开注销特性来完成的。但绝对不能保证用户会使用它

我如何知道不再需要会话

你怎么知道用户在屏幕后面做什么?这就是为什么集装箱会替你处理,你应该让他做它的工作。只需遵循一些最佳实践,即可让您的应用程序在无内存问题的情况下进行扩展:

  • 尽量减少使用
    HttpSession
    (不要将整个地球都放在它上面)
  • 如果不再使用对象,请从
    HttpSession
    中删除对象
  • 将长寿命数据放入数据库
我需要使用什么策略来管理会话数量和消除不必要的会话

如果不需要,应用程序服务器会为您执行此操作。更准确地说,容器将
HttpSession
保留在内存中,直到相关用户在某个时间段内处于非活动状态,此时会话超时。此时,会话可以被垃圾收集。这意味着
HttpSession
对象保留在内存中