【发布时间】:2014-05-26 14:23:57
【问题描述】:
这是我在这里的第一个问题,因此感谢任何能够提供帮助的人。
让我解释一下问题:
我有一个小程序,可以将文件按块上传到 servlet。
小程序的参数之一是 JSESSIONID,因此它可以创建一个 cookie 并识别服务器上的正确会话(使用 wireshark 测试)。
对于发送的每个块,servlet 正在成功获取会话。
问题是,在上传过程中,会话似乎没有得到延长。如果我(在应用程序“web.xml”中)将会话超时配置为 5 分钟,则必须在小于该时间的时间内上传文件,否则会话将被破坏并且上传将失败。
这很奇怪,因为 servlet 每隔几秒钟执行一次(并接受会话 ID),我迷路了。
这是 web.xml 中的参数:
<session-config><session-timeout>5</session-timeout></session-config>
下一个代码(在 servlet 上)每隔几秒(对于每个块)创建日志,跟踪会话 id 成功:
log.info("isRequestedSessionIdValid==> " + servletRequest.isRequestedSessionIdValid());
log.info("getSession==> " + (servletRequest.getSession(false) != null));
log.info("Requested session ID vs. actual session id: " + servletRequest.getRequestedSessionId() + "==" + servletRequest.getSession(false).getId());
我使用 tomcat 7.0.50 作为 servlet 容器,在集群中配置会话复制和 apache 2 作为前端,粘性会话处于活动状态。
提前感谢您的帮助。
问候, 何塞
【问题讨论】:
-
我试过这个属性 org.apache.catalina.core.StandardHostValve.ACCESS_SESSION (tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html) 没有运气。无论如何,servlet 总是成功调用
servletRequest.getSession(false)。
标签: java tomcat servlets applet session-timeout