3

我们在 JBoss 和 Weblogic 上部署了第三方应用程序。出于审计目的,我们需要在此应用程序中记录对 EJB 的访问。是否可以应用透明服务,将对这些 EJB 的所有调用记录到文件或数据库中?

我能想到的唯一选择是使用 Spring 作为业务委托并修改客户端以使用 Spring bean。不幸的是,我们没有修改客户端代码的选项,而这必须在服务器上以这样一种方式完成,即我们的代码在客户端调用 EJB 之前和之后执行。

我为此寻找解决方案,但没有发现任何可以为我指明正确方向的东西。

感谢您的帮助。

编辑:

经过进一步研究,JBoss 似乎确实支持自定义 EJB 拦截器。可以使用 EJB 2.x 的 standardjboss.xml 和 EJB 3.x 的 ejb3-interceptors-aop.xml 对此进行配置

事实证明,关于如何创建用于 EJB 2.x 的此类拦截器的示例并没有太多可用的示例——这正是我所需要的。它似乎不太难,我会试试这个看看它是否有效。

4

1 回答 1

3

您应该能够直接使用 EJB 3 拦截器。在http://docs.jboss.org/ejb3/docs/tutorial/1.0.7/html/EJB3_Interceptors.html中查找 DefaultInterceptor以了解如何将拦截器应用于部署中的所有 ejb。EJB 3 规范支持这一点。

对于 JBoss 中的 EJB 2.x,请查看 standard-jboss.xml。在那里,您可以为不同的 ejb 类型修改完整的默认容器。您还可以在standard-jboss.xml 中创建一个新的容器配置,并在那里添加您的拦截器,并通过在您的ejb.jar META-INF/ 文件夹中包含一个jboss.xml 将您的EJB 与新配置相关联。或者,如果我没记错的话,你可以在 META-INF/jboss.xml 中定义新的容器配置和关联。这里的一些信息:http: //docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/EJBDeployer_MBean-Container_configuration_information.html

于 2012-11-12T14:53:18.130 回答