以下问题浮现在我的脑海中
1)我在某个地方读到:
被动:有状态bean实现可伸缩性的机会
可伸缩性在这里意味着什么?
2)与状态会话bean相比,无状态会话bean如何更具有可伸缩性?
3) As
对于钝化,有状态会话bean被序列化,为了激活,它将被容器反序列化.
为什么我们需要序列化和反序列化,难道没有序列化和反序列化就不能做(被动和激活)吗?序列化如何帮助容器钝化bean?
发布于 2015-03-13 11:07:46
1)有状态会话bean必须维护它们在方法调用之间的标识和状态。如果这样的bean有一段时间没有被访问,那么容器可以选择钝化它。这意味着它的状态以某种方式保存在JVM之外(通常使用java序列化写入磁盘文件),并且恢复了它的资源使用(内存)。当再次访问SFSB时,容器将再次激活它(反序列化它)。因此,SFSB能够更好地扩展(它的更多“实例”可以适用于单个,但有关联的时间和I/O惩罚)。
2)无状态bean只需要在单个方法调用的持续时间内存在,然后它们使用的任何资源都可以被回收。更常见的是,它们中的一些将被保存在一个池中,并暂时可用来处理特定的方法调用。因此,无状态会话bean对可伸缩性几乎没有或没有直接影响。
有状态会话bean用于与无状态会话bean完全不同的用途。由于可伸缩性的考虑,您不会选择一个而另一个。
3)序列化是Java用于读取和写入任意对象状态的机制。与SFSB关联的实例变量必须是可序列化的(除了一些记录在案的异常)。这不仅允许对SFSB进行被动/激活,还允许将其迁移到其他JVM实例,以支持故障转移和/或负载平衡。
对于SFSB,钝化和激活可以通过其他方式进行,但序列化是EJB规范要求的。
https://stackoverflow.com/questions/29026774
复制相似问题