2

我正在阅读一本 EJB 3.1 书(O'Reilly、Andrew Lee Rubinger 和 Bill Burke),作者在其中提到(这些不是书中的确切文字,这是我自己对文本的理解):

在 SFSB 中,当它被激活时(从钝化池中出来后),序列化的对象,不像它们的原始规范,不会返回默认值,比如 int 不能保证返回 0 并且 object 不能保证返回 null

我的理解正确吗?如果是真的,为什么 EJB 会有这种行为?

http://www.coderanch.com/t/546765/java-EJB-SCBCD/certification/why-serialization-unpredictable-SFSB#2481285上的原始帖子

4

1 回答 1

2

根据仅适用于瞬态字段的规范。

从规范来看——O'Reilly 没有设计 EJB(只是说......):

“虽然容器不需要使用Java 编程语言的序列化协议来存储钝化会话实例的状态,但它必须达到等效的结果一个例外是容器不需要重置瞬态字段的值在激活期间[12]。通常不鼓励将会话 bean 的字段声明为瞬态。” [EJB 3.1 - 4.2.1 -强调我的]

编辑:

顺便说一句,您的问题的答案也在 EJB 规范中:

“对使用瞬态字段的限制确保容器在钝化和激活期间可以使用 Java 序列化。”

EJB 3.1 规范(镜像/pdf)

于 2011-07-26T14:56:03.963 回答