0

大家好!

我正在 GWT 框架上开发 Web 应用程序。我创建了一个特殊的 servlet,在其中实现了异步方法。在 servletinit()方法中,我创建了连接池,我想在应用程序 close() 事件中销毁它。

在调用的 servlet 的内置方法中,destroy()我将代码负责资源清除,但它似乎永远不会运行。

我应该在哪里清除资源或如何强制使用 destroy() 方法?只是关闭网络浏览器没有帮助。init()运行但destroy()不运行。

4

2 回答 2

2

在 java servlet 中,destroy()不应由程序员调用。但是,如果它被调用,它就会被执行。隐含的问题是,servlet 会被破坏吗?不,它不会。该destroy()方法不应该也不会破坏 java servlet。

查看在 GWT 中关闭窗口时执行代码

于 2013-06-03T07:13:15.003 回答
1

你在这里混合了两件事。

查看JavaDoc 以了解Servlet.destroy()- 它特别声明“由 servlet 容器调用以向 servlet 指示 servlet 正在停止服务”,这并不意味着关闭浏览器将调用此方法。但是,停止或以其他方式强制完全刷新容器

可能与您更相关的是WindowCloseListener- 您可以实现onWindowClosed()调用 RPC 方法来清理您的后端,只需记住在 next 上重新设置池EntryPoint.onModuleLoad()

干杯,

于 2013-06-03T07:08:03.037 回答