しばらくの間、JSF マネージド Bean の代わりに CDI Bean (Myfaces CODI を使用) を使用する Bean を使用して、このテクノロジで実際に何ができるかをよりよく理解するために、いくつかのチュートリアルを行ってきました。悪用される可能性が最も高いのは CDI イベント モデルですが、それを何に使用できるかについてはあまりインスピレーションがありません。
クリティカル パスでデータベースにアクセスせずにページ アクセスの永続的な記録を維持するページ カウンター メカニズムがあります。つまり、ページの読み込み時間が遅くなります。これは、シングルトン EJB に格納されたデータを使用して、AtomicReference によってアクセスされる ConcurrentHashMap 内の AtomicInteger をインクリメントすることによって機能します。次に、EJB タイマーが定期的にマップを「取得」して新しいマップに置き換え、適切なデータベース レコードに新しいヒットを追加します。PreDestroy リスナーは、アプリ サーバーのシャットダウン時に永続化されていない更新を保存します。
ページの読み込み時に、アプリケーション スコープの CDI Bean がそれを監視してバックエンド処理を行う「ページ アクセス」イベントを起動するだけでよいと考えましたが、これはいくつかの点で既存の設計には及ばないものです。
現在、更新はバッチ処理されており、タイマー メソッドは数分ごとにのみ実行されます。
サーバーの電源障害が発生した場合、既存の設計ではデータが失われますが、これは望ましくありませんが許容できますが、正常なシャットダウンを処理するという点でかなり信頼性があります。
サーバーのシャットダウンなどの場合に、キューに入れられた CDI イベントに何が起こるかをよりよく理解する必要があります。これを理解するために仕様を調べます。
私が本当に興味を持っているのは、JSF アプリケーションで CDI イベントを使用する興味深いシナリオに触発されているという上記のアイデアに関するフィードバックをいただければ幸いですが、経験を共有したい人はいますか?
ありがとう。