Servlet中的会话ID管理

时间:2009-09-08 11:23:35

标签: java servlets session-management

在使用Jmeter进行性能测试时,我的Web应用程序出现了一些问题。我的问题不在于Jmeter,而是围绕一个简单的Servlet会话管理行为。

因此,我们有一个Web应用程序,当您请求登录页面时,它会在响应标头中传回“会话ID”,并用于浏览器发出的后续请求。会话ID与用户名和密码一起传递,如果经过身份验证,则会返回新的会话ID,并且会话将继续保持该会话ID。 这是使用cookie。

现在,在Jmeter中,我们有一种基于线程的负载测试方法。当我并行运行线程时,本质上发生的是每个线程请求一个登录页面,并且不知何故只有最后一个请求登录页面的线程被认证,因为我觉得随后的登录页面在cookie中带有一个新的会话ID,使旧的或者无效其他会议ID。

这是因为每个线程都是一个不同的会话并拥有自己的cookie管理器。这很奇怪。

但我的问题是:

  1. 将会话ID与登录页面一起使用是否有意义;我看到可能会在访问应用程序时创建会话,但是,是什么设置了具有会话ID的新cookie?这个应用程序已经写好,所以我只是想知道。

  2. 如果在jmeter中正在覆盖每个线程的会话ID,那是否意味着我无法正确分配单独的cookie管理器?即使线程是不同的会话也有可能,旧会话ID或cookie将被丢弃?

  3. 服务器如何知道为后续请求使会话ID / cookie无效?我确定,不是请求者的IP地址的基础,因为不同的浏览器仍然允许我打开并行多个会话。

    非常感谢任何有关该问题的想法,澄清和解释。

2 个答案:

答案 0 :(得分:0)

服务器只会暂停会话,这肯定听起来就像你在这里写cookie一样。

您是否尝试通过在网址中包含会话ID来查看其管理方式(模拟在浏览器中禁用的Cookie)这是否有效?

答案 1 :(得分:0)

这根本解决了吗? 我会说在登录页面中有一个会话ID是很不寻常的。会话用于存储数据服务器端并将该数据与连接的用户相关联。当然,在对用户进行身份验证之前,不应该有任何数据服务器端。