Buon modello o framework per aggiungere il controllo a un'app esistente? [chiuso]


Ho un'applicazione J2EE enterprise esistente a cui devo aggiungere il controllo, cioè essere in grado di registrare operazioni CRUD su diversi tipi di dominio importanti (Employee, AdministratorRights, ecc.).

L'applicazione ha un'architettura n-tier standard:

  • Interfaccia Web
  • Operazioni aziendali incapsulate all'interno di una miscela di bean di sessione stateless e POJO transazionali (usando Spring)
  • la persistenza è una miscela di JDBC diretta (dall'interno dell'azienda strato) e EJB 2.x BMP entity bean (lo so, lo so)

La mia domanda è: ci sono modelli standard o (meglio ancora) framework/librerie specifici per l'aggiunta di auditing come preoccupazione trasversale? So che AOP può essere utilizzato per implementare preoccupazioni trasversali in generale; Voglio sapere se c'è qualcosa di specificamente finalizzato all'auditing.

Author: Andrew Swan, 2008-09-16

6 answers

Forse dovresti dare un'occhiata a Audit4j che fornisce il controllo delle funzionalità aziendali e ha diverse opzioni per la configurazione. Un altro framework è JaVers che si concentra maggiormente sul controllo delle modifiche di basso livello sul livello di persistenza, che potrebbe corrispondere un po ' meglio al tuo caso.

Entrambi i framework forniscono funzionalità specifiche di audit che vanno oltre i semplici AOP/Intercettori.

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

In questo momento mi sto appoggiando all'utilizzo di Spring AOP (usando lo stile "@AspectJ") per consigliare le operazioni aziendali esposte al livello Web.

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

Vado un po ' contro il grano qui e suggerisco di guardare una soluzione di livello inferiore. Abbiamo un'architettura simile nella nostra applicazione, e per il nostro controllo siamo andati con trigger di controllo a livello di database che tengono traccia delle operazioni all'interno del RDBMS. Questo può essere fatto come a grana fine o grossolana come ti piace, devi solo identificare le entità che desideri monitorare.

Ora, questa non è una soluzione ideologicamente pura; implica mettere la logica nel database che è discutibilmente dovrebbe rimanere nel livello aziendale, e non posso negare che questa vista abbia valore, ma nel nostro caso abbiamo molte applicazioni indipendenti che interagiscono con il modello di dati, alcune scritte in C, alcune con script e altre app J2EE, e tutte devono essere controllate in modo coerente.

Forse c'è ancora un po ' di lavoro AOP da fare qui sul lato J2EE, badate bene; qualsiasi metodo che aggiorna il database potrebbe dover fare del lavoro aggiuntivo per dire al database quale utente sta facendo il lavoro. Usiamo le variabili di sessione del database per fare questo, ma ci sono altre soluzioni, ovviamente.

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

Provare un framework di programmazione Orientato agli aspetti .

Da Wikipedia "Aspect-oriented programming (AOP) è un paradigma di programmazione che aumenta la modularità consentendo la separazione di preoccupazioni trasversali".

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

Per tutti gli EJB è possibile utilizzare gli intercettori EJB 3.0 (Questo è qualcosa di simile al filtro Servlet) e un altro intercettore simile per Spring (non ha familiarità con spring) Come stai usando EJB e Spring che potrebbe non coprire l'intera transazione. Un altro approccio potrebbe essere l'utilizzo di un controller frontale, tuttavia, che richiede alcune modifiche nel lato client. Ancora un altro approccio potrebbe essere l'utilizzo di un filtro Servlet tuttavia ciò significa implementare la logica del dominio nella presentazione strato.

Consiglierei il controller anteriore in questo caso.

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

Ho appena appreso di un nuovo progetto Spring chiamato Spring Data JPA che offre una funzione di controllo basata su AOP. Non è ancora GA, ma porta a tenere d'occhio.

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