想要理解EJB的有状态的会话Bean,我们可以先来看下Session是如何保存客户端的状态的。
假设有多个客户端来访问同一个服务器,那么服务器是如何来区分这些不同的客户端呢?我们知道服务器回返回一个jsessionid给客户端,客户端将这个jsessionid写到客户端的cookie中。每次客户端向服务器发送请求的时候,都会在head中加入这个jsessionid(当有多个客户端访问时,服务器就存在多个session)。客户端通过这个jsessionid找到那个保存了客户信息的session。
因此,服务器保存客户端的状态通俗地说就是:客户端通过请求将自身的相关信息保存在服务器的一个session类中,服务器中有多个session,因此服务器将每个session赋予一个id值,并将与之对应的id发送给客户端。客户端再把这个id保存了下来,每次请求时带上这个id找到对应的session。因此,客户端的状态其实是保存在对应的session中的。