状态会话Bean是否应该实现Serializable接口?

7

我有一个简单的问题,但是在Java EE 6中找不到答案!

有状态会话Bean是否应实现Serializable?

我测试了实现和未实现java.io.Serializable,没有区别和错误。

我的感觉告诉我,有状态会话Bean必须实现Serializable,因为它可以在长期会话中持久化...

2个回答

4

1
好的,但是为什么?它不会被持久化吗? - Gatschet
1
我认为你误解了这里“有状态”的含义。它只是指bean在客户端调用之间维护状态。这并不意味着bean本身将被序列化到磁盘上作为java.io.Serializable - peter.petrov
规范中有一段文本:在容器调用实例及其拦截器的PrePassivate方法后,它执行实例状态(以及拦截器状态)的Java编程语言序列化(或其等效操作)。可以看出,序列化的是状态和拦截器。 - Sergio
“State”这个词太模糊了。基于那个描述,我会说答案是肯定的,EJB bean本身需要是可序列化的,否则在需要序列化其状态时无法进行。或者所有bean的属性都需要是可序列化的吗? - Gimby

1

这取决于您将如何使用它:

@Remote:表示远程业务接口。方法参数按值传递,并且需要作为RMI协议的一部分进行序列化。

@Local:表示本地业务接口。客户端向bean传递方法参数时,参数是按引用传递的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接