当前位置:  开发笔记 > 编程语言 > 正文

为什么HttpServlet实现Serializable?

如何解决《为什么HttpServlet实现Serializable?》经验,为你挑选了2个好方法。

在我对Servlet的理解中,Servlet将由Container实例化,其init()方法将被调用一次,并且servlet将像单例一样生存直到JVM关闭.

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

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



1> skaffman..:

从技术上讲,我相信servlet容器允许将servlet对象"钝化"到磁盘,就像EJB会话bean一样.因此,如果您的应用因非序列化字段而失败,那么您提出的问题是正确的.

在实践中,我从来没有听说过这样做的容器,所以它只是早期J2EE早期糟糕的传统包袱.我不担心.


@dev这个bug是关于不可序列化的会话属性,而不是关于servlet的任何序列化.

2> Rastislav Ko..:

HttpServlet应该通过序列化到磁盘并在servlet容器重启后继续运行.例如,tomcat允许你设置标志,使这种生存.下一个选项是使用JNDI进行传输.这不是垃圾,它仅用于极端用例.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有