gpt4 book ai didi

java - CDI - 使用库中的拦截器类

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:02 24 4
gpt4 key购买 nike

我们可以在来自不同 ejb-jar 的 ejb-jar 中使用基于注释的拦截器吗?我尝试使用 @Logged 示例,但坚持使用它。有人可以帮帮我吗?

在核心.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(在企业应用程序中)使用这个拦截器?例如:记录业务方法调用,方法可以在不同的模块中找到:

module1.jar:

public class ModuleClass{
@Logged public void doSomething(){...}
}

我也尝试将

感谢您的任何建议!

最佳答案

那应该绝对有效,尽管我记得我在 JBoss 6 上摆弄了很多东西。

您必须在定义拦截器的 JAR 的 beans.xml 中激活拦截器,我认为 EAR 部署存在问题,但这很重要不久前,我无法再访问源代码。

如果这不起作用 - 在两个 JAR 的 beans.xml 中尝试激活。尝试查询 BeanManager如果拦截器已注册。

关于java - CDI - 使用库中的拦截器类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10996043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com