2011-11-11 226 views
4

是否可以为耳朵内的所有EJB配置默认拦截器?Java EE EJB拦截器

可以在ejb-jar.xml中为模块中的EJB提及缺省拦截器。如果应用程序中有多个模块,则所有模块都需要具有此配置。

我正在寻找在应用程序全局上强制执行某些拦截器。因此,如果它可以在应用程序级别或服务器级别进行设置,这将有所帮助,从而不会由各个模块的开发人员自行决定是否将其包含在内。

+0

哪个版本的EJB? – skaffman

+0

脱离主题评论,会过滤/拦截太多吗? – r0ast3d

+0

EJB版本是3.1,我正在使用JEE 6拦截器。缺点是必须在所有ejb模块的每个ejb-jar.xml中配置默认​​拦截器。目的是为应用程序公开的所有服务设置特定的审计/日志记录拦截器。我在Spring中发现了类似的东西,使用AOP可以在服务级别配置拦截器。我试图找出JEE 6是否支持这些功能 – lives

回答

2

你无法避免必须在每个ejb-jar文件中指定拦截器,因此不可能在EAR级别上定义它。 Interceptor类需要与使用它的所有bean打包在同一个ejb-jar文件中。

您仍然可以将拦截器的代码抽取到所有ejb模块使用的公用库中,但仍然需要在每个ejb-jar文件中定义并激活一个调用公共实现的单独拦截器。