【发布时间】:2015-10-30 15:36:05
【问题描述】:
Rest 意味着无状态。客户端维护应用程序状态,服务器维护资源状态。在有状态的应用程序中,该状态在哪里维护?它是在会话中维护还是在内存数据库中或其他任何东西中维护?
【问题讨论】:
标签: web-services rest session web-applications
Rest 意味着无状态。客户端维护应用程序状态,服务器维护资源状态。在有状态的应用程序中,该状态在哪里维护?它是在会话中维护还是在内存数据库中或其他任何东西中维护?
【问题讨论】:
标签: web-services rest session web-applications
来自 oracle 文档:
什么是有状态会话 Bean?
有状态会话 bean 是维护会话状态的会话 bean。
有状态会话 bean 对于会话会话很有用,在会话会话中,必须在方法调用之间维护状态,例如实例变量值或事务状态。这些会话 bean 在该客户端的生命周期内映射到单个客户端。
有状态会话 bean 在方法调用之间维护其状态。因此,为每个客户端创建了一个有状态会话 bean 的实例。每个有状态会话 bean 都包含一个身份以及与单个客户端的一对一映射。
当容器确定它必须从内存中删除一个有状态会话 bean(以释放资源)时,容器通过钝化(将 bean 序列化到磁盘)来维护 bean 的状态。这就是为什么你钝化的状态必须是可序列化的。但是,此信息无法在系统故障后继续存在。当客户端再次请求 bean 实例时,容器会激活之前钝化的 bean 实例。
保存的状态类型不包括资源。容器调用 bean 中的 ejbPassivate 方法为 bean 提供清理其资源的机会,例如持有的套接字、数据库连接和带有静态信息的哈希表。所有这些资源都可以在 ejbActivate 方法期间重新分配和重新创建。
https://docs.oracle.com/html/E13981_01/undejbs002.htm
记住“将bean序列化到磁盘”,注意这是oracle的实现,并不意味着所有的实现都是这样。
【讨论】: