将建议应用于现有EJB

时间:2012-08-13 08:22:01

标签: java jboss ejb weblogic interceptor

我们在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一起使用的拦截器的样本并不多,这就是我所需要的。它似乎并不太难,我会试着看它是否有效。

1 个答案:

答案 0 :(得分:3)

您应该能够使用直接的EJB 3拦截器。在http://docs.jboss.org/ejb3/docs/tutorial/1.0.7/html/EJB3_Interceptors.html中查找DefaultInterceptor,了解如何将拦截器应用于部署中的所有ejbs。这得到了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