为啥我们需要在创建 java web 时为放入服务器的类实现 Serializable [关闭]
Posted
技术标签:
【中文标题】为啥我们需要在创建 java web 时为放入服务器的类实现 Serializable [关闭]【英文标题】:Why we need implement Serializable for classes put in server when create a java web [closed]为什么我们需要在创建 java web 时为放入服务器的类实现 Serializable [关闭] 【发布时间】:2021-04-26 13:51:48 【问题描述】:我正在学习 Java 网络,我的老师让我必须为放在服务器上的课程实施 Serializable
。为什么我们必须这样做。因为当我不实施Serializable
时,我的服务器仍然处于活动状态。那么,谁能回答我为什么我必须为放在服务器端的类实现Serializable
类
【问题讨论】:
您可能希望类实现 Serializable 接口的原因有很多,其中最明显的原因是您希望序列化该对象。类通常不需要实现 Serializable 才能放在服务器上,所以为什么你的老师要求你这样做是一个谜。我建议你问问你的老师为什么他们需要这个。 有些类需要可序列化。例如,您添加到会话中的对象通常需要序列化。但是,是的。请老师解释。 (这就是他们付钱去做的事情......) 【参考方案1】:我假设我们谈论的是基于Jakarta Servlet 技术构建的网络应用程序。
您的网络应用在运行时会占用web container 的内存。同时用户越多,占用的内存就越多。为了减轻内存压力,一些 Web 容器调用了一项功能,将不太活跃的用户会话写入磁盘。
此外,某些 Web 容器在关闭时会执行此操作。关闭时仍在运行的当前会话将保存到磁盘,并在服务器再次启动时自动重组。
另一种情况是load-balancing,其中多个协同工作的 Web 容器可能会将一些会话从任何负担过重的服务器重新定位到任何未充分利用的服务器。此传输在运行时即时发生。
在所有这些情况下,您的网络应用程序类的对象必须支持Serializable
,以便它们可以写入存储或通过本地网络进行通信。
在一些复杂的应用程序中,让所有对象都可序列化可能是不可行的。在这种情况下,您可以选择禁用我上面讨论的这三个功能。然后,您需要确保在部署服务器上运行您的 Web 应用程序,该服务器具有足够多的内核和足够多的内存来处理您的 Web 应用程序将遇到的峰值用户数。
【讨论】:
以上是关于为啥我们需要在创建 java web 时为放入服务器的类实现 Serializable [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥在编排的容器化架构中,我们需要一个 Web 服务器和一个应用服务器?
为啥当android在java中调用第二次Web服务时会创建新的会话
为啥身份验证类型 - 当我们创建新的 Web APi 服务时,.NET Core 中 Web API 的个人用户帐户不可用