Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java webapplication中序列化的目的_Java_Tomcat_Serialization_Javabeans - Fatal编程技术网

Java webapplication中序列化的目的

Java webapplication中序列化的目的,java,tomcat,serialization,javabeans,Java,Tomcat,Serialization,Javabeans,其中是Web应用程序中序列化的用法 表单bean必须是可序列化的 在tomcat中,sessions.ser文件的用法是什么 哇,很多问题没有很多背景 对于您的#1,我假设您谈论的是序列化,您在其他观点中提到了Java的序列化,而不是序列化与并行。如果是这样,许多web应用程序将序列化或保存对象的状态以保持其持久性。这种持久性可用于跨HTTP请求(如在会话管理中),用于信息的长期存储,或用于跨“网络”发送,以确保各方都获得所述信息的副本 在HTTP中,你必须问问自己,这是否真的是一个好主意,因为

其中是Web应用程序中序列化的用法

  • 表单bean必须是可序列化的

  • 在tomcat中,sessions.ser文件的用法是什么


  • 哇,很多问题没有很多背景

    对于您的#1,我假设您谈论的是序列化,您在其他观点中提到了Java的序列化,而不是序列化与并行。如果是这样,许多web应用程序将序列化或保存对象的状态以保持其持久性。这种持久性可用于跨HTTP请求(如在会话管理中),用于信息的长期存储,或用于跨“网络”发送,以确保各方都获得所述信息的副本


    在HTTP中,你必须问问自己,这是否真的是一个好主意,因为设计和缩放无状态是“好的”,如果你有一个备份存储,比如DB,为什么DB不做这项工作。我猜表单bean就是这样使用的,因为servlet将传递所描述的表单信息。

    对于第一个和第二个问题,请看一下这个。关于第三个问题,sessions.ser是一个序列化会话。但是,

  • 是的,每当我们需要在文件系统中持久化对象或通过网络发送对象时,我们都需要序列化。您可能会认为,在web应用程序中,我们不一定要这样做。但是服务器通常需要一个可序列化的东西,以防将来当您切换到集群环境或希望将bean传递给远程组件(即EJB组件)时需要它。或者您可能希望将bean存储到会话中,因此您的bean应该是可序列化的

  • 是的,出于同样的原因,如上所述

  • sessions.ser是一个序列化会话。Tomcat保留了它,因此可以稍后恢复。现在您已经了解了为什么我们需要可序列化bean,因为您可能希望将bean对象存储到会话,将Tomcat persist会话存储到文件系统,即session.ser。因此,您的bean必须实现可序列化,以便可以在会话中持久化/恢复它们

  • 顺便说一句,bean的持久化和恢复的正确性取决于Serializable的正确实现。为此,我建议您阅读有效Java中的相关主题。

    如果容器想要存储会话,会话(以及添加到会话中的所有属性)需要可序列化。这可能有两个原因:

  • 会话必须传递到负载平衡集群的另一个节点
  • 由于内存不足,会话需要调出
  • 另一个可能的原因是使用跨上下文dispathing将请求属性从一个webapp传递到另一个webapp。两个webapp都有不同的类加载器,因此简单的cast无法工作

    因此,您的tomcat似乎使用序列化将会话写入文件。表单bean通常也存储在会话中,因此是的,它必须是可序列化的

    最后,像在任何其他应用程序中一样,可能还有更多的原因需要序列化。缓存可能需要它来交换缓存内容(就像ehcache可以做的那样)。任何其他数据部分都可以序列化为blob存储在数据库中,…

    1)这是一个依赖于应用程序服务器的功能,但Servlet规范指出,如果Servlet容器希望支持分布式环境(跨实例共享会话)它必须接受实现可序列化的对象并能够迁移它们。Tomcat还支持为可序列化的会话对象跨服务器重启存储会话状态。您可以在conf/context.xml文件中打开或关闭Tomcat的这一特性(请参见此处的注释)

    2) 只有在以下情况下,表单bean才有必要序列化:a)它是会话作用域,b)您正在使用分布式会话或Tomcat等特性来持久化需要它的会话

    3) sessions.ser文件是包含会话中序列化对象的文件。如果您已经配置了Tomcat,则它可以在服务器重新启动时使用它来保存它们(见上文)。一般来说,.ser文件是一个序列化的Java对象,它是对象状态的二进制表示

  • 这是一个很好的描述 :

    序列化有许多优点 优势。它规定:

    • 一种持久化对象的方法,比 将其属性写入文本 文件,并重新组装 通过把这些读回来
    • 发出远程过程调用的一种方法,如在SOAP中
    • 分配对象的方法,尤指在软件中 成分
      如COM、CORBA等
    • 一种检测时变数据变化的方法
    一个真实世界(简单)的例子:说 您可以用java创建一个用户实例。 现在要显示此对象 在使用javascript的web浏览器中。 一个选项是序列化 对象,使javascript 可以反序列化对象(使用java和javascript都能理解的表示形式)和 显示它

  • 这取决于你需要做什么 与表单bean有关的 是否应序列化
  • 这是一个网络 帮助您部署的应用程序 并管理其他web应用程序以 雄猫。我不是雄猫专家,但是 我认为Tomcat经理试图 记住关于 由web创建的会话 它正在管理的应用程序。信息技术 甚至需要记住这些信息 当tomcat进程 重新启动。所以,Tomcat经理 创建名为“Session.ser”的文件 这是一个序列化表示 它需要的信息的 还记得所有被管理的人吗 申请会议

  • 你能解释一下为什么给出的答案不能让你满意吗?在答案发布几周后,你似乎增加了一笔赏金,但你似乎没有