Application Server如何识别有状态bean的用户

时间:2015-03-19 19:30:31

标签: java java-ee jboss ejb

我对有状态豆的工作方式有所了解,关于豆类中的钝化和激活状态,但我不确定它是如何起作用的。

我向HttpServlet实例发送一个简单的HTTP请求。我的简单应用程序中没有身份验证或授权服务。 Appliation Server启动一个线程来处理我的请求。比为这个请求创建了一个有状态的bean,它做了一些事情,这个处理请求的那个应该被杀掉。

一分钟后,我再次发送请求(无缓存模式),并委派相同的有状态bean来处理我的请求。我想知道应用服务器如何识别我?

也许这是因为浏览器? HTTP协议具有“连接保持活动”模式。 Application Server识别我,因为浏览器打开了一个多连接TCP处理程序,而Application Server与浏览器有会话?

请解释我在没有身份验证或授权服务时如何识别用户,并且我们使用了无状态的HttpServlet。

2 个答案:

答案 0 :(得分:2)

Java Servlet容器为每个用户维护“会话”,即使不涉及身份验证服务也是如此。一般而言,HTTP请求通过cookie或URL重写与正确的会话相关联 - 后者通常意味着客户端回送到服务器的查询参数或REST样式请求URI提供会话标识符。在安全(即HTTPS)服务中,请求还可以通过SSL上下文与会话相关联。

您的有状态bean很可能与用户会话相关联,而不是与用户自己的标识符相关联。除其他事项外,请注意这意味着即使用户身份验证服务到位,同一用户也可能同时拥有多个不同的活动会话,来自同一客户端计算机或不同的客户端计算机。

答案 1 :(得分:1)

在浏览器中,您可以将 JSESSIONID 视为Cookie,用于跟踪用户会话。 有关详情,请参阅Google JSESSIONID。