10

監査を追加する必要がある既存のJ2EEエンタープライズアプリケーションがあります。つまり、いくつかの重要なドメインタイプ(Employee、AdministratorRightsなど)でCRUD操作を記録できます。

アプリケーションには、標準のn層アーキテクチャがあります。

  • Webインターフェイス
  • ステートレスセッションBeanとトランザクションPOJOの混合物にカプセル化されたビジネスオペレーション(Springを使用)
  • 永続性は、直接JDBC(ビジネスレイヤー内から)とEJB 2.x BMPエンティティBean(私は知っている、私は知っている)の混合物です

私の質問は、横断的関心事として監査を追加するための標準的なパターンまたは(さらに良い)フレームワーク/ライブラリはありますか?AOPは、一般的に横断的関心事を実装するために使用できることを私は知っています。特に監査を目的としたものがあるかどうか知りたいです。

4

6 に答える 6

5

おそらく、ビジネス機能の監査を提供し、構成のためのいくつかのオプションを備えたAudit4jを確認する必要があります。別のフレームワークは、永続化レイヤーでの低レベルの変更の監査に重点を置いた JaVers です

どちらのフレームワークも、プレーンな AOP/インターセプターを超える監査固有の機能を提供します。

于 2015-07-08T07:47:18.573 に答える
2

現在、Spring AOP (「@AspectJ」スタイルを使用) を使用して、Web レイヤーに公開されているビジネス オペレーションにアドバイスすることに傾倒しています。

于 2008-09-16T02:03:45.137 に答える
2

ここでは少し趣向を変えて、下位層のソリューションを検討することをお勧めします。私たちのアプリケーションには同様のアーキテクチャがあり、監査のために、RDBMS 内の操作を追跡するデータベース レベルの監査トリガーを使用しました。これは、必要に応じて細かくまたは粗く行うことができます。追跡するエンティティを特定するだけで済みます。

さて、これはイデオロギー的に純粋な解決策ではありません。これには、おそらくビジネス層に残るはずのデータベースにロジックを配置する必要があり、このビューに価値があることは否定できませんが、私たちの場合、データ モデルとやり取りする多くの独立したアプリケーションがあり、一部は C で記述されています。一部はスクリプト化され、その他は J2EE アプリであり、それらすべてを一貫して監査する必要があります。

ここでは、J2EE 側でまだ AOP の作業が行われている可能性があります。データベースを更新するメソッドは、どのユーザーが作業を行っているかをデータベースに伝えるために、追加の作業を行う必要がある場合があります。これを行うためにデータベース セッション変数を使用しますが、もちろん他の解決策もあります。

于 2008-09-30T15:25:22.937 に答える
0

アスペクト指向プログラミング フレームワークを試してください。

ウィキペディアから「アスペクト指向プログラミング (AOP) は、分野横断的な関心事の分離を可能にすることでモジュール性を高めるプログラミング パラダイムです」。

于 2008-09-16T02:04:03.453 に答える
0

AOP ベースの監査機能を提供する Spring Data JPA という新しい Spring プロジェクトについて知りました。まだ GA ではありませんが、注意が必要です。

于 2011-02-10T22:16:21.440 に答える
0

すべての EJB に対して、EJB 3.0 インターセプター (これはサーブレット フィルターに似ています) と Spring 用の別の同様のインターセプター (Spring に慣れていない) を使用できます。EJB と Spring を使用しているため、トランザクション全体をカバーしない場合があります。別のアプローチとしてフロント コントローラーを使用することもできますが、これにはクライアント側での変更が必要です。さらに別のアプローチとして、サーブレット フィルターを使用することもできますが、それは、プレゼンテーション レイヤーにドメイン ロジックを実装することを意味します。

この場合、フロントコントローラーをお勧めします。

于 2008-09-16T10:28:45.237 に答える