Java 有状态会话bean钝化和序列化-EJB

Java 有状态会话bean钝化和序列化-EJB,java,jakarta-ee,serialization,ejb,stateful-session-bean,Java,Jakarta Ee,Serialization,Ejb,Stateful Session Bean,我想到了以下问题 1) 我在某处读到: 钝化:有状态bean的可伸缩性机会 可伸缩性在这里是什么意思 2) 无状态会话bean如何比有状态会话bean更具可伸缩性 3) 作为 对于钝化,有状态会话bean被序列化,并且 激活它将由容器反序列化 为什么我们需要序列化和反序列化,它(被动和激活)不能在没有序列化和反序列化的情况下完成吗?序列化如何帮助容器钝化bean???有状态会话bean必须在方法调用之间保持其标识和状态。如果这样一个bean有一段时间没有被访问,那么容器可以选择将其钝化。这意味着

我想到了以下问题

1) 我在某处读到:

钝化:有状态bean的可伸缩性机会

可伸缩性在这里是什么意思

2) 无状态会话bean如何比有状态会话bean更具可伸缩性

3) 作为

对于钝化,有状态会话bean被序列化,并且 激活它将由容器反序列化

为什么我们需要序列化和反序列化,它(被动和激活)不能在没有序列化和反序列化的情况下完成吗?序列化如何帮助容器钝化bean???有状态会话bean必须在方法调用之间保持其标识和状态。如果这样一个bean有一段时间没有被访问,那么容器可以选择将其钝化。这意味着它的状态以某种方式被保存在JVM之外(通常使用java序列化写入磁盘文件),并且它的资源使用(内存)被恢复。当再次访问SFSB时,容器将再次激活它(反序列化它)因此,SFSB能够更好地扩展(单个JVM中可以容纳更多的“实例”,但会有相关的时间和I/O损失)

2) 无状态bean只需要在单个方法调用期间存在,然后可以回收它们使用的任何资源。更常见的情况是,它们中的许多将被维护在一个池中,并临时用于处理特定的方法调用。因此,无状态会话bean对可伸缩性几乎没有直接影响

有状态会话bean用于与无状态会话bean完全不同的目的。出于可伸缩性考虑,您不会选择其中一个

3) 序列化是Java用来读取和写入任意对象状态的机制。与SFSB关联的实例变量必须是可序列化的(除了一些记录在案的异常)。这不仅允许对SFSB进行钝化/激活,还允许将其迁移到其他JVM实例,以支持故障转移和/或负载平衡


对于SFSB,钝化和激活可以通过其他方式完成,但序列化是EJB规范强制要求的。

非常感谢您的回复。。。但它没有解决我的前两个问题。你能详细说明最后一段吗(比如序列化如何帮助钝化和激活)??感谢您写的第一点“通常使用java序列化写入磁盘文件”。。。请给我任何参考/链接到它??谢谢,没有参考资料。这代表了我的观察。我已经广泛使用了JBoss/WildFly、WebSphere和WebLogic。