2008-09-16 15 views
7

Tôi có một ứng dụng doanh nghiệp J2EE hiện có mà tôi cần thêm kiểm toán, tức là có thể ghi lại các hoạt động CRUD trên một số loại miền quan trọng (Employee, AdministratorRights, v.v.).Mẫu hoặc khuôn khổ tốt để thêm kiểm tra vào ứng dụng hiện có?

Ứng dụng này có một kiến ​​trúc n-tier tiêu chuẩn:

  • giao diện Web
  • Hoạt động kinh doanh đóng gói trong một hỗn hợp của đậu stateless session và POJO giao dịch (sử dụng Spring)
  • kiên trì là một hỗn hợp của JDBC trực tiếp (từ bên trong lớp kinh doanh) và đậu thực thể EJB 2.x BMP (Tôi biết, tôi biết)

Câu hỏi của tôi là: có bất kỳ mẫu chuẩn nào không hoặc (tốt hơn) khung/thư viện cụ thể để thêm kiểm toán như là một mối quan tâm chéo? Tôi biết AOP có thể được sử dụng để thực hiện các mối quan tâm xuyên suốt nói chung; Tôi muốn biết nếu có một cái gì đó đặc biệt nhằm mục đích kiểm toán.

+0

Những người bỏ phiếu ít nhất có để lại nhận xét giải thích lý do không? –

Trả lời

2

Hiện tại tôi đang hướng tới sử dụng Spring AOP (sử dụng kiểu "@AspectJ") để tư vấn cho các hoạt động kinh doanh tiếp xúc với lớp web.

+0

Tôi cũng bắt đầu ở đây, đặc biệt nếu ứng dụng của tôi đang sử dụng Spring pojos - nên làm cho việc thêm vào dễ dàng hơn là thử một thư viện AOP khác. –

0

Hãy thử một khung lập trình Aspect Oriented.

Từ Wikipedia "Lập trình hướng đối tượng (AOP) là một mô hình lập trình làm tăng tính mô đun bằng cách cho phép tách các mối quan tâm chéo".

0

Đối với tất cả các EJB, bạn có thể sử dụng bộ chặn EJB 3.0 (Đây là thứ tương tự như bộ lọc Servlet) và bộ chặn tương tự khác cho Spring (không quen với lò xo) Vì bạn đang sử dụng EJB cũng như Spring. giao dịch. Một cách tiếp cận khác có thể được sử dụng một bộ điều khiển mặt trận tuy nhiên đòi hỏi một số sửa đổi ở phía khách hàng. Tuy nhiên, cách tiếp cận khác có thể được sử dụng một bộ lọc Servlet tuy nhiên điều đó có nghĩa là thực hiện logic miền trong lớp trình bày.

Tôi muốn giới thiệu Bộ điều khiển phía trước trong trường hợp này.

2

Tôi sẽ đi ngược lại với hạt ở đây và đề xuất bạn nên xem xét giải pháp cấp thấp hơn. Chúng tôi có một kiến ​​trúc tương tự trong ứng dụng của chúng tôi và cho việc kiểm tra của chúng tôi, chúng tôi đã thực hiện với các trình kích hoạt kiểm tra cấp cơ sở dữ liệu theo dõi các hoạt động trong RDBMS. Điều này có thể được thực hiện như hạt mịn hoặc thô như bạn muốn, bạn chỉ cần xác định các thực thể bạn muốn theo dõi.

Bây giờ, đây không phải là giải pháp thuần túy về mặt tư tưởng; nó liên quan đến việc đặt logic trong cơ sở dữ liệu được cho là vẫn còn trong tầng kinh doanh, và tôi không thể phủ nhận rằng quan điểm này có giá trị, nhưng trong trường hợp của chúng ta, chúng ta có nhiều ứng dụng độc lập tương tác với mô hình dữ liệu, một số được viết bằng C, một số kịch bản, và những ứng dụng J2EE khác, và tất cả chúng phải được kiểm toán một cách nhất quán.

Có thể vẫn còn một số công việc AOP được thực hiện ở đây ở phía bên J2EE, hãy nhớ bạn; bất kỳ phương pháp nào cập nhật cơ sở dữ liệu đều có thể phải thực hiện thêm một số công việc để báo cho cơ sở dữ liệu biết người dùng đang làm công việc gì. Chúng tôi sử dụng các biến phiên cơ sở dữ liệu để làm điều này, nhưng tất nhiên là có các giải pháp khác.

0

Tôi vừa mới tìm hiểu về một dự án Spring mới có tên là Spring Data JPA cung cấp AOP-based auditing feature. Nó không phải là GA, nhưng nó giữ một mắt trên.

5

Có thể bạn nên xem Audit4j cung cấp chức năng kiểm tra chức năng kinh doanh và có một số tùy chọn để định cấu hình. Một khung công tác khác là JaVers mà tập trung nhiều hơn vào việc kiểm tra sửa đổi cấp thấp trên lớp kiên trì, có thể phù hợp với trường hợp của bạn tốt hơn một chút.

Cả hai khung công tác đều cung cấp các chức năng cụ thể kiểm toán vượt xa AOP/Interceptor đơn giản.