Web プロジェクトに監査を実装したいと考えています。基本的に、私のアプリは、EJB プロジェクト (JAR) 内のメソッドを呼び出す Web プロジェクト (WAR) によって構成されています。すべては、コンテナ (Jboss およびおそらく近い将来 Websphere) にデプロイされる EAR 内にラップされます。
そのため、Web 側でユーザー セッションを取得し、ejb 側でエンティティと DAO を取得しました。一部のユーザー トランザクションに監査手順を実装したいので、変更を実行したユーザーの ID と共にデータ状態をデータベースに保持する必要があります。
EJB 側へのすべての呼び出しでユーザー ID を簡単に渡し、ビジネス メソッド内から監査を実行できますが、それではビジネス メソッドとクライアント メソッドが乱雑になります。
非常に興味深い監査フレームワークであるHibernate Enversを調べましたが、そのままではユーザー ID を監査しません。そのため、さらに調べて、この投稿を見つけました。これは、 RevisionListenerを使用してセッションからユーザー ID を取得し、データベースに保存する方法を説明しています。ただし、次の理由により、EAR アーキテクチャでは機能しないようです。この RevisionListener は、セッションからユーザー ID を取得するために FacesContext.getCurrentInstance() を使用するため、RevisionListener が Web 側にある必要があることを意味します。 EJB側ではなくアプリ...
まあ、私は自分自身を十分に明確にしたことを願っています:)
乾杯!