Tomcat禁用/销毁或重用特定请求的会话创建

时间:2018-06-08 11:10:47

标签: jsp tomcat tomcat7 session-management

背景

我正在使用Tomcat来提供一个.jsp页面,该页面可以由负载均衡器调用,以确定托管应用程序的给定服务器是否在线并且能够为请求提供服务。

.jsp只是向给定的应用程序发出请求,并查看它是否能够响应 - 向负载均衡器发送适当的响应。

问题是每个对此.jsp的请求都在Tomcat中创建一个持续一段时间的会话 - 可能会有许多负载均衡器请求此页面导致会话的累积消耗资源。

问题

我是否可以将Tomcat配置为执行以下任何操作?

  • 不创建处理特定请求的会话
  • 重用单个会话或已创建的会话来处理特定请求
  • 立即销毁为特定请求创建的会话,或者为该会话提供非常小的生命周期

根据具体要求,我指的是我希望从Tomcat提供的.jsp。

我正在使用Tomcat 7.

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

这里有几个选项。

首先,您可以简单地切换到使用静态文件而不是动态JSP页面。如果服务器正在接受请求,这可能与运行JSP页面一样有效......除非您的JSP探测某些事情以确定应用程序运行状况。

另一种方法是禁用该JSP的会话生成。默认情况下,除非另行指定,否则会在访问JSP时创建会话。以下是如何做到这一点:

<%@page
  session="false"
  ..
%>
... rest of your page

现在你的JSP页面甚至不会产生会话,所以你不必处理它们或类似的东西。

最后,如果您出于某种原因需要该JSP中的会话,那么您确实可以为特定类型的所有客户端使用单个会话。您可以使用CrawlerSessionManagerValve执行此操作。只需确保将crawlerUserAgents字符串设置为与负载均衡器用于其探针的任何内容相匹配。

答案 1 :(得分:0)

如何将会话时间降低到1分钟

<session-config>
    <session-timeout>1</session-timeout>
</session-config>