资源清除代码应该放在GWT应用程序中的什么位置



大家好!

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

在称为destroy()的servlet的内置方法中,我将我的代码负责资源清理,但它似乎从未运行。

我应该在哪里清除资源或者我如何强制destroy()方法?仅仅关闭浏览器是没有用的。init()运行,destroy()不运行

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

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

你把两件事混在一起了。

看一下Servlet.destroy()的JavaDoc -它特别声明"由servlet容器调用,以指示servlet正在退出服务",这并不意味着关闭浏览器将调用此方法。但是,停止或强制对容器进行完全刷新。

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

欢呼,

最新更新