在 J2EE 应用程序中存储服务器端状态的其他方法是使用有状态会话 bean,或者在数据库中存储会话状态。虽然有状态会话 bean 在会话状态治理方面有更大的灵活性,但是在可能的情况下,将会话状态存储在 Web 层仍然有好处。假如业务对象是无状态的,那么通常可以仅仅添加更多 Web 服务器来扩展应用程序,而不用添加更多 Web 服务器和更多 EJB 容器, 这样的成本一般要低一些并且轻易完成。使用 HttpSession 存储会话状态的另一个好处是 Servlet API 提供了一种会话失效时通知的轻易方法。在数据库中存储会话状态的成本可能难以承受。
复制提供了一些可能的好处,包括可用性、容错和伸缩性。此外,有大量会话复制的方法可用:方法的选择取决于应用程序群集的规模、复制的目标和 servlet 容器支持的复制设施。复制有性能成本,包括 CPU 周期(存储在会话中的序列化对象)、网络带宽(广播更新),以及基于磁盘的方案中写入到磁盘或者数据库的成本。