0

皆さん、こんにちは!

GWT フレームワークで Web アプリケーションを開発しています。非同期メソッドを実装する特別なサーブレットを作成しました。サーブレットinit()メソッドで接続プールを作成しましたが、アプリケーションの close() イベントで破棄したいと考えています。

呼び出されたサーブレットの組み込みメソッドでdestroy()、リソースのクリアを担当するコードを配置しましたが、決して実行されないようです。

リソースをどこでクリアする必要がありますか、または destroy() メソッドを強制するにはどうすればよいですか? Web ブラウザを閉じるだけでは役に立ちません。init()実行されますが実行されdestroy()ません。

4

2 に答える 2

2

Java サーブレットでdestroy()は、プログラマが呼び出すことは想定されていません。ただし、呼び出された場合は実行されます。暗黙の疑問は、サーブレットが破棄されるかどうかです。いいえ、それはしません。このdestroy()メソッドは、Java サーブレットを破棄することは想定されておらず、破棄しません。

GWT でウィンドウを閉じてコードを実行するを見てください。

于 2013-06-03T07:13:15.003 に答える
1

ここで2つのことを混ぜています。

JavaDoc をServlet.destroy()参照してください。具体的には、「サーブレットがサービスを停止していることをサーブレットに示すために、サーブレット コンテナーによって呼び出されます」と記載されていますが、これは、ブラウザーを閉じるとこのメソッドが呼び出されることを意味するものではありません。ただし、コンテナーの完全な更新を停止または強制すると、そうなります。

あなたにもっと関連するのは、WindowCloseListenerを実装しonWindowClosed()て RPC メソッドを呼び出してバックエンドをクリーンアップすることができるということです。 next でプールを再設定することを忘れないでくださいEntryPoint.onModuleLoad()!

乾杯、

于 2013-06-03T07:08:03.037 に答える