jsp - Tomcat 禁用/销毁或重用特定请求的 session 创建

标签 jsp tomcat tomcat7 session-management

背景

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

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

问题在于,对此 .jsp 的每个请求都会在 Tomcat 中创建一个持续一段时间的 session - 可能有许多负载平衡器请求此页面,从而导致 session 消耗资源。

问题

我可以配置 Tomcat 来执行以下任何操作吗?

  • 不创建 session 来处理特定请求
  • 重复使用单个 session 或已创建的 session 来处理特定请求
  • 立即销毁为特定请求创建的 session ,或者为所述 session 提供非常短的生命周期

我所说的特定请求是指我希望从 Tomcat 提供的 .jsp。

我正在使用 Tomcat 7。

感谢任何帮助!

最佳答案

这里有几个选项。

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

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

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

现在您的 JSP 页面甚至不会生成 session ,因此您不必处理它们或类似的东西。

最后,如果出于某种原因需要该 JSP 中的 session ,您确实可以为特定类型的所有客户端使用单个 session 。您可以使用 CrawlerSessionManagerValve 来做到这一点.只需确保将 crawlerUserAgents 字符串设置为与负载均衡器用于其探测的任何内容相匹配即可。

关于jsp - Tomcat 禁用/销毁或重用特定请求的 session 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50759343/

相关文章:

database - setmaxidle、setminidle、setInitialSize 和 setmaxactive 池属性之间的区别?

java - java 方法中 JDBC 连接到 derby

Ajax jsp 响应文本

eclipse - Apache Tomcat 启动错误

Tomcat LDAP 用户身份验证

maven - java.lang.NoSuchMethodError : org. springframework.beans.factory.xml.XmlReaderContext.getResourceLoader()Lorg/springframework/core/io/ResourceLoader

java - 如何获取jsp中选择选项中选择的数据库值?

eclipse - 当我放在单独的文件夹中时 Jsp 没有编译

java - 什么是学习开源的好方法

java - OS X 10.10 优胜美地中的 Apache Tomcat