JSF web应用程序中的哪些类需要是可序列化的



JSF控制器、服务和DAO问题中的User类是否需要可序列化?

一旦服务器抛出java.io.NotSerializableException,类名就会出现在异常消息中。服务器期望类为Serializable就足够了。

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

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

就一般设计实践而言,任何被归类为";Java Bean";整个代码库需要实现CCD_ 14。JavaBeans规范中甚至提到了这一点。只有当它涉及到例如@RequestScoped@ApplicationScoped bean时,才会主动使用它,所以这就是为什么大多数开发人员只是从这些bean中省略它们。从另一方面来看,java.io.NotSerializableException可能是一个很好的提示,可以防止开发人员/维护人员在";错误的";范围,而不是最初设计backingbean的位置。

另请参阅:

  • java.io.WriteAbortedException:写入中止;java.io.NotSerializableException
  • JavaBean到底是什么
JSF应用程序中的每个类都必须实现serializable接口。

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

其他信息:

  • 解释的对象序列化:

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

就像《星际迷航》中的运输者一样,这一切都是为了把复杂的东西变成一个1和0的平面序列,然后取1和0的序列(可能在另一个地方,可能在另一个时间)和重建原来的复杂"什么的"

isopp.org(序列化和非序列化)

  • 瞬态变量的用途是什么

相关内容

  • 没有找到相关文章