1.在Web应用程序中使用序列化的位置。
2.表单bean是否可以序列化是必要的。
3.在tomcat中session.ser文件的用法是什么..
1)它是一个依赖于应用程序服务器的功能,但Servlet规范说如果servlet容器想要支持分布式环境(跨实例共享会话)等,它必须接受实现Serializable并能够迁移它们的对象。 Tomcat还支持在服务器重新启动时为可序列化的会话对象存储会话状态。您可以在conf / context.xml文件中打开或关闭Tomcat的此功能(请参阅其中的注释)。
2)如果a)它是会话范围的b)你使用分布式会话或Tomcat用来持久化需要它的会话,那么表单bean只能是Serializable是必需的。
3)sessions.ser文件是包含会话中序列化对象的文件。如果您将服务器配置为重新启动服务器,Tomcat会使用它来保留它们(参见上文)。通常,.ser文件是序列化的Java对象,它是对象状态的二进制表示。
对于你的第一个和第二个问题,看看这个SO thread。关于你的第3个问题,sessions.ser是一个序列化的会话。然而,
顺便说一下,持久化和恢复bean的正确性取决于Serializable的正确实现。为此,我建议您阅读Effective Java中的相关主题。
如果容器想要存储会话,则会话(以及添加到其中的所有属性)需要是可序列化的。这可能有两个原因:
另一个可能的原因是使用跨上下文调度将请求属性从一个webapp传递到另一个webapp。这两个webapp都有不同的类加载器,所以简单的转换不起作用。
所以你的tomcat似乎使用序列化将会话写入文件。表单bean通常也存储在会话中,所以是的,它必须是可序列化的。
最后,与其他任何应用程序一样,可序列化的原因可能更多。缓存可能需要它来交换缓存内容(就像ehcache可以做的那样)。任何其他数据部分都可以序列化,以便作为blob存储在数据库中,......
哇,很多问题没有很多背景。
对于你的#1,我会假设你在谈论序列化,你在其中提到Java的序列化,而不是序列化与并行性。如果是这样,许多Web应用程序将序列化或保存对象的状态以保持其持久性。该持久性可用于跨HTTP请求(如在会话管理中),用于长期存储信息,或者用于通过“网络”发送以确保所有方获得所述信息的副本。
一个人必须在HTTP中问自己,如果这确实是一个好主意,因为设计和规模无状态是“好的”,如果有一个后备存储,如数据库,为什么数据库不做这项工作。我猜的表单bean在这种性质中使用,因为servlet将传递表单信息作为descrbied。