Bon modèle ou cadre pour ajouter un audit à une application existante? [fermé]


J'ai une application J2EE enterprise existante à laquelle je dois ajouter un audit, c'est-à-dire pouvoir enregistrer des opérations CRUD sur plusieurs types de domaines importants (Employee, AdministratorRights, etc.).

L'application a une architecture standard à n niveaux:

  • Interface web
  • Opérations commerciales encapsulées dans un mélange de beans de session sans état et de POJOs transactionnels (en utilisant Spring)
  • la persistance est un mélange de JDBC direct (à partir de l'entreprise couche) et EJB 2.x Beans entité BMP (je sais, je sais)

Ma question est la suivante: existe-t-il des modèles standard ou (mieux encore) des frameworks/bibliothèques spécifiquement pour ajouter l'audit en tant que préoccupation transversale? Je sais que l'AOP peut être utilisé pour mettre en œuvre des préoccupations transversales en général; je veux savoir s'il y a quelque chose spécifiquement destiné à l'audit.

Author: Andrew Swan, 2008-09-16

6 answers

Peut-être que vous devriez jeter un oeil à Audit4j qui fournit l'audit des fonctionnalités métier et a plusieurs options pour la configuration. Un autre framework est JaVers qui se concentre davantage sur l'audit des modifications de bas niveau sur la couche de persistance, ce qui pourrait correspondre un peu mieux à votre cas.

Les deux cadres fournissent des fonctionnalités spécifiques à l'audit qui vont au-delà des simples AOP/intercepteurs.

 5
Author: Gerald Mücke, 2015-07-08 07:47:18

En ce moment, je penche pour l'utilisation de Spring AOP (en utilisant le style "@AspectJ") pour conseiller les opérations commerciales exposées à la couche Web.

 2
Author: Andrew Swan, 2008-09-16 02:03:45

Je vais aller un peu à contre-courant ici et suggérer que vous regardiez une solution de niveau inférieur. Nous avons une architecture similaire dans notre application, et pour notre audit, nous avons opté pour des déclencheurs d'audit au niveau de la base de données qui suivent les opérations dans le SGBDR. Cela peut être fait aussi fin ou grossier que vous le souhaitez, il vous suffit d'identifier les entités que vous souhaitez suivre.

Maintenant, ce n'est pas une solution idéologiquement pure; cela implique de mettre de la logique dans la base de données qui est sans doute censé rester dans le niveau commercial, et je ne peux pas nier que cette vue a de la valeur, mais dans notre cas, nous avons de nombreuses applications indépendantes interagissant avec le modèle de données, certaines écrites en C, d'autres scriptées et d'autres applications J2EE, et toutes doivent être auditées de manière cohérente.

Il y a peut-être encore du travail AOP à faire ici du côté J2EE, rappelez-vous; toute méthode qui met à jour la base de données peut devoir faire un travail supplémentaire pour dire à la base de données quel utilisateur fait le travail. Nous utilisons des variables de session de base de données pour ce faire, mais il existe d'autres solutions, bien sûr.

 2
Author: Chris R, 2008-09-30 15:25:22

Essayez un cadre de programmationOrienté Aspect .

De Wikipédia "La programmation orientée aspect (AOP) est un paradigme de programmation qui augmente la modularité en permettant la séparation des préoccupations transversales".

 0
Author: Ash, 2008-09-16 02:04:03

Pour tous les EJB, vous pouvez utiliser des intercepteurs EJB 3.0 (C'est quelque chose de similaire à Servlet filter) et un autre intercepteur similaire pour Spring (pas familier avec spring) Comme vous utilisez EJBs ainsi que Spring qui peuvent ne pas couvrir l'ensemble des transactions. Une autre approche pourrait être d'utiliser un contrôleur frontal mais qui nécessite une modification du côté client. Une autre approche pourrait utiliser un filtre de Servlet cependant cela signifie implémenter la logique de domaine dans la présentation couche.

Je recommanderais le contrôleur avant dans ce cas.

 0
Author: Rejeev Divakaran, 2008-09-16 10:28:45

Je viens d'apprendre un nouveau projet Spring appelé Spring Data JPA qui offre une fonctionnalité d'audit basée sur AOP. Ce n'est pas encore GA, mais il faut garder un œil sur.

 0
Author: Andrew Swan, 2011-02-10 22:16:21