代码之家  ›  专栏  ›  技术社区  ›  Andrew Swan

向现有应用程序添加审计的良好模式或框架?[关闭]

  •  9
  • Andrew Swan  · 技术社区  · 18 年前

    我有一个现有的J2EE企业应用程序,我需要添加审计,即能够记录几个重要域类型(Employee、AdministratorRights等)上的CRUD操作。

    • 封装在无状态会话bean和事务pojo混合体中的业务操作(使用Spring)
    • 持久性是直接JDBC(来自业务层)和EJB2.xBMP实体bean(我知道,我知道)的混合体

    6 回复  |  直到 18 年前
        1
  •  5
  •   Gerald Mücke    11 年前

    Audit4j 它提供了对业务功能的审核,并具有多个配置选项。 JaVers 这更侧重于审核持久性层上的低级修改,这可能更符合您的情况。

    这两个框架都提供了审计特定的功能,超越了普通的AOP/拦截器。

        2
  •  2
  •   Andrew Swan    18 年前

    现在我倾向于使用springaop(使用“@AspectJ”样式)来建议web层公开的业务操作。

        3
  •  2
  •   Chris R    18 年前

    我将有点反对这里的观点,并建议您考虑一个较低层次的解决方案。我们的应用程序中有一个类似的体系结构,对于我们的审计,我们使用了数据库级审计触发器来跟踪RDBMS中的操作。这可以根据您的喜好进行细粒度或粗粒度处理,您只需确定要跟踪的实体。

    现在,这不是一个思想上纯粹的解决方案;它涉及到将逻辑放在数据库中,可以说应该保留在业务层中,我不能否认这个视图有价值,但是在我们的例子中,我们有许多独立的应用程序与数据模型交互,有些是用C编写的,有些是脚本编写的,还有一些是J2EE应用程序,所有这些应用程序必须持续审计。

    请注意,在J2EE方面可能还有一些AOP工作要做;任何更新数据库的方法都可能需要做一些额外的工作来告诉数据库哪个用户在做这些工作。我们使用数据库会话变量来实现这一点,当然还有其他解决方案。

        4
  •  0
  •   Ash    18 年前

    试试看 Aspect Oriented 编程框架。

    从Wikipedia来看,“面向方面编程(AOP)是一种编程范式,它通过允许跨领域关注点的分离来提高模块化程度”。

        5
  •  0
  •   Rejeev Divakaran    18 年前

    对于所有EJB,您都可以使用EJB3.0拦截器(这类似于ServletFilter)和另一个类似的Spring拦截器(不熟悉Spring)

    在这种情况下,我建议使用前控制器。

        6
  •  0
  •   Andrew Swan    15 年前

    我刚刚了解了一个名为springdatajpa的新Spring项目,它提供了一个 AOP-based auditing feature