大家好!
我正在 GWT 框架上开发 Web 应用程序。我创建了一个特殊的 servlet,在其中实现了异步方法。在 servletinit()
方法中,我创建了连接池,我想在应用程序 close() 事件中销毁它。
在调用的 servlet 的内置方法中,destroy()
我将代码负责资源清除,但它似乎永远不会运行。
我应该在哪里清除资源或如何强制使用 destroy() 方法?只是关闭网络浏览器没有帮助。init()
运行但destroy()
不运行。
在 java servlet 中,destroy()
不应由程序员调用。但是,如果它被调用,它就会被执行。隐含的问题是,servlet 会被破坏吗?不,它不会。该destroy()
方法不应该也不会破坏 java servlet。
你在这里混合了两件事。
查看JavaDoc 以了解Servlet.destroy()
- 它特别声明“由 servlet 容器调用以向 servlet 指示 servlet 正在停止服务”,这并不意味着关闭浏览器将调用此方法。但是,停止或以其他方式强制完全刷新容器。
可能与您更相关的是WindowCloseListener
- 您可以实现onWindowClosed()
调用 RPC 方法来清理您的后端,只需记住在 next 上重新设置池EntryPoint.onModuleLoad()
!
干杯,