有状态会话 Bean 反序列化后不会获得默认值

发布于 2024-11-26 16:13:14 字数 525 浏览 1 评论 0原文

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

在 SFSB 中,当其被激活时(在钝化后) pool),序列化对象与原始规范不同,不会返回 像 int 这样的默认值不保证返回 0 和 object 不保证返回 null

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

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

I was going through an EJB 3.1 book (O'Reilly, Andrew Lee Rubinger and Bill Burke), there the author is mentioning that (these are not the exact words in the book, this is my own understanding of the text):

in SFSB when its becoming activated (after coming out of passivated
pool), serialized objects, unlike their original norm, will not return
the default values like int will not guaranteed to return 0 and object
is not guaranteed to return null

Is my understanding correct? If it's true, why EJB have this behavior?

Original post on http://www.coderanch.com/t/546765/java-EJB-SCBCD/certification/why-serialization-unpredictable-SFSB#2481285

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

机场等船 2024-12-03 16:13:14

根据规范,仅适用于瞬态场。

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

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

编辑:

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

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

EJB 3.1 规范(镜像/ pdf)

Per spec that is only applicable to transient fields.

From the specifications -- O'Reilly did not design EJBs (just saying ...) :

"While the container is not required to use the Serialization protocol for the Java programming language to store the state of a passivated session instance, it must achieve the equivalent result. The one exception is that containers are not required to reset the value of transient fields during activation[12]. Declaring the session bean’s fields as transient is, in general, discouraged." [EJB 3.1 - 4.2.1 - emphasis mine]

edit:

Btw, the answer to your question is also in the EJB specification:

"The restrictions on the use of transient fields ensure that containers can use Java Serialization during passivation and activation."

EJB 3.1 spec (mirror/pdf)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文