JSFWeb应用程序中的哪些类需要序列化?

JSFWeb应用程序中的哪些类需要序列化?,jsf,serialization,Jsf,Serialization,问题中的User类是否需要序列化?JSF应用程序中的每个类都必须实现serializable接口 如果要覆盖此选项,请使用transient关键字跳过不可序列化类的序列化 其他信息: 对象序列化说明: 它允许您获取一个对象或一组对象,将它们放在磁盘上或通过有线或无线传输机制发送它们,然后 稍后,也许在另一台计算机上,反转过程:恢复 原始对象。基本机制是将对象展平为 一个一维比特流,并将该比特流转回 进入原始对象 就像《星际迷航》中的运输机一样,这一切都是关于把一些复杂的东西变成一个1和0的平

问题中的
User
类是否需要序列化?

JSF应用程序中的每个类都必须实现
serializable
接口

如果要覆盖此选项,请使用
transient
关键字跳过不可序列化类的序列化

其他信息:

  • 对象序列化说明:
它允许您获取一个对象或一组对象,将它们放在磁盘上或通过有线或无线传输机制发送它们,然后 稍后,也许在另一台计算机上,反转过程:恢复 原始对象。基本机制是将对象展平为 一个一维比特流,并将该比特流转回 进入原始对象

就像《星际迷航》中的运输机一样,这一切都是关于把一些复杂的东西变成一个1和0的平面序列,然后 以1和0的顺序(可能在另一个地方,可能 在另一个时间)和重建原来的复杂 “什么东西。”

org(序列化和非序列化)


一旦服务器抛出
java.io.NotSerializableException
,那么类名就会出现在异常消息中。服务器希望类是可序列化的,这就足够了

通常,这些类(in)直接在中结束,因为服务器可能需要将所有
HttpSession
实例转换(序列化)为
InputStream
/
byte[]
,以便在重新启动时将它们保存到本地磁盘文件系统以记住打开的会话,或在集群中通过网络传输

在JSF(+CDI)web应用程序中,所有
@ViewScoped
@FlowScoped
@ConversationScoped
@SessionScoped
bean将直接保存在
HttpSession
中。因此,很明显,至少这些bean及其所有属性都需要是可序列化的

至于一般设计实践,在整个代码库中被归类为“javabean”的任何东西都需要实现
Serializable
。这一点甚至在文章中提到。这仅在涉及
@RequestScoped
@ApplicationScoped
bean时才会被积极使用,因此大多数开发人员只是从这些bean中省略它们。从另一方面来看,
java.io.NotSerializableException
可能是一个很好的提示,它可以防止开发人员/维护人员在“错误”的范围内(重新)使用支持bean,而不是支持bean最初设计的范围

另见: