我们可以在来自不同 ejb-jar 的 ejb-jar 中使用基于注释的拦截器吗?我使用@Logged 示例进行了尝试,但还是坚持了下来。有人可以帮帮我吗?
在 core.jar 中:
@Inherited
@InterceptorBinding
@Retention(RUNTIME)
@Target({METHOD, TYPE})
public @interface Logged {}
和
@Logged
@Interceptor
public class LoggedInterceptor implements Serializable {
private static final long serialVersionUID = 1L;
public LoggedInterceptor() {
}
@AroundInvoke
public Object logMethodEntry(InvocationContext invocationContext)
throws Exception {
System.out.println("Entering method: "
+ invocationContext.getMethod().getName() + " in class "
+ invocationContext.getMethod().getDeclaringClass().getName());
return invocationContext.proceed();
}
}
问题是:如何从另一个 ejb-jar(在企业应用程序中)使用这个拦截器?例如:记录业务方法调用,其中方法可以在不同的模块中找到:
模块1.jar:
public class ModuleClass{
@Logged public void doSomething(){...}
}
我也尝试将 <interceptor><class..... 放到 beans.xml 中,但它对我不起作用。
感谢您的任何建议!