Ana*_*and 17 java servlets java-ee destroy
根据链接http://www.xyzws.com/Servletfaq/when-is-destroy-of-servlets-called/20,调用destroy方法的原因之一是当servlet没有得到请求时很长一段时间.
我想可能会有一些页面长时间没有被调用.那么,这是否意味着销毁将被调用,它们将不再使用?
实际上,我在采访中被问到这个问题,他告诉我只有在服务器关闭时才会调用destroy方法.
感谢任何帮助.
据我所知,
在java servlet中,destroy()不应该由程序员调用.但是,如果它被调用,它就会被执行.隐含的问题是,servlet会被破坏吗?不,它不会.destroy()方法不应该也不会破坏java servlet.
destroy()java servlet 的意思是,内容在容器决定销毁servlet之前执行.但是如果您destroy()自己调用该方法,则会执行内容,然后继续相应的过程.对于这个问题,destroy()执行get,然后完成servlet初始化.
destroy()首先调用方法,然后从容器中删除Servlet,最后进行垃圾回收.destroy()方法通常包含释放任何资源(如JDBC连接)的代码,这些资源不会被垃圾回收.
几个案例:
根据医生
由 servlet 容器调用,以向 servlet 指示该 servlet 正在停止服务。仅当 servlet 的服务方法中的所有线程都退出后或超时时间过后,才会调用此方法。servlet容器调用该方法后,不会再对该servlet调用service方法。
这是经典的规范与实现的问题之一。规范允许像 Tomcat 这样的 Servlet 容器维护一个 Servlet 对象池,并在负载上升或下降时创建和销毁它们。在这种设置中,当不再需要特定实例时,将调用 destroy。为每个请求创建一个新实例甚至是合法的,在处理请求之前立即调用 init 并在处理之后立即销毁。
然而实际上,每个 Servlet 容器实际上都维护着每个 Servlet 的一个实例。由于 Servlet 需要线程安全,这也是完全可以的。在这种情况下,仅当上下文关闭时才调用 destroy。
我想不出很多情况下您会想要池化 Servlet,但规范允许这样做。
| 归档时间: |
|
| 查看次数: |
21995 次 |
| 最近记录: |