ユーザーが ViewScoped バッキング Bean を利用する JSF ページで作業している状況を想像してください。アプリケーション内の別のページに移動する場合、Bean のカスタム デストラクタ (@PreDestroy) が自動的に呼び出されます。ユーザーがタブ/ウィンドウを適切に閉じる場合、Bean を解放するために AJAX を介してサーバーでリモート コマンドを呼び出すことができます。
しかし、単純にユーザー側の電源が落ちて、PC の電源がすぐに切れたり、ブラウザーが不適切に終了して JS コードを呼び出すことができなくなったりした場合はどうなるでしょうか。これは、Bean がそのリソースを使用してサーバー側で永遠にハングアップすることを意味します。そのような問題はどのように解決できますか?
私が考えている解決策の 1 つは、リモート コマンドを介してマネージド Bean を「ping」する PrimeFaces ポーリング要素をページに配置することです。Bean がタイムアウトに気付くと、すべてのリソースを解放して終了します。この問題のより良い解決策はありますか? どうも。