【发布时间】:2009-10-16 22:15:45
【问题描述】:
我正在修改作为 2.1 无状态 EJB 实现的现有应用程序。我想对对 EJB 的所有调用进行某种通用的、详细的记录。
我想记录的东西:
- 被调用方法的名称
- 所有传递参数的序列化副本
- 返回值的序列化副本
我之前为 asp.net REST Web 服务实现了类似的东西,方法是在处理请求之前简单地放置一个钩子,然后在发送回响应之前放置一个钩子。它会产生大量数据,但对于调试长时间运行的系统来说非常值得。
我不确定如何对 EJB 进行同样的操作。我想避免 AOP,因为该应用程序当前不使用 AOP。拦截器不起作用,因为它不是 EJB 3.0。
有没有人知道一种方法可以连接到 EJB 处理管道以在请求进入时查看请求?有没有其他方法可以做到这一点?
谢谢
【问题讨论】:
-
我对 AOP 不是很熟悉,但我认为仅仅因为应用程序当前不使用 AOP 而不使用 AOP 并不是一个好的借口,如果 AOP 确实可以解决您的问题的话。如果每项技术都因为“我们不在这个应用程序中使用它”而被搁置一旁,我们仍然会用汇编或 C 语言编写所有内容,而不需要面向对象或函数式编程。
-
我想避免 AOP,因为感觉添加 AOP 会对整个系统产生很大的影响。由于我不熟悉java中的AOP,我不确定它会对系统产生什么样的副作用(如果有的话)。不幸的是,该应用程序没有经过很好的单元测试,所以我必须弄清楚 QA 团队需要做多少回归测试。任何人都可以阐明这些担忧吗?如果只是为了好玩,我最想加入 AOP。