java - HttpServlet为什么要实现Serializable?

标签 java session servlets serializable

在我对 Servlet 的理解中,Servlet 会被 Container 实例化,它的 init() 方法会被调用一次,并且 Servlet 会像单例一样生活,直到 JVM 关闭。

我不希望我的 servlet 被序列化,因为它将在应用服务器恢复或正常启动时重新构建。 servlet 不应包含特定于 session 的成员,因此将其写入磁盘并重新实例化是没有意义的。 这个有实际用途吗?

我担心的是,我在其中放置了一些不可序列化的字段,然后我的应用程序将在生产环境中神秘地失败,在那里会发生不同类型的 session 复制。

最佳答案

从技术上讲,我相信允许 servlet 容器将 servlet 对象“钝化”到磁盘,这与 EJB session bean 可以采用的方式类似。因此,如果您的应用程序由于不可序列化的字段而失败,您问这个问题是正确的。

在实践中,我从未听说过容器会这样做,所以它实际上只是早期 J2EE 糟糕的旧时代遗留下来的包袱。我不会担心的。

关于java - HttpServlet为什么要实现Serializable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/179743/

相关文章:

java - 如何禁用 Guava 缓存?

java - netty:保存 channel 处理程序上下文以供以后使用

java - 实现 servlet 数据的缓存

java - 如何在 log4j2 的 SmtpAppender 中设置自定义主题

java - 我怎样才能使 JSch 中的 session 持续更长时间?

java - eclipse 中的 Tomcat WTP : route all requests to same Servlet

java引用数组中的对象

java - 通用方法,多个括号,类型

php - 如何从两个不同的表中获取 session 变量?

java - 使用 spring SecurityContextHolder 在 tomcat 中 session id 为 null