gpt4 book ai didi

java - EJB3 相关 ID

转载 作者:搜寻专家 更新时间:2023-11-01 03:11:22 25 4
gpt4 key购买 nike

现在我的同事从事日志子系统的工作,他们想要绑定(bind)从某些业务方法启动的单独操作。例如,如果 bean A 中的方法调用 bean B 中的某个方法,然后在 bean C 中调用某个方法,那么了解 bean B 中的业务方法会很棒,而 bean C 会为 bean A 中的方法做一些工作。尤其是很棒的是知道 B 和 C 的方法为 bean A 的具体调用完成了一些工作单元。

那么,问题是如何将这些工作单元联系起来?显然,使用方法参数进行绑定(bind)并不美观!

而且我认为是时候问另一个问题了,这个问题与上一个问题足够接近。如果我想将一些上下文信息从 bean A 传播到另一个从 A 调用的 beans 怎么办?安全凭证和安全主体之类的东西?我能做什么?可能是我问的问题是某种不好的做法?

最佳答案

看起来是 的一个很好的用例, Logback 均可用和 Log4J .本质上,您是将一些自定义值附加到线程,并且来自该线程的所有日志消息都可以将该值附加到消息。

我认为在 EJB 中实现它的最佳方式是 interceptor :

public class MdcInterceptor {

@AroundInvoke
public Object addMdcValue(InvocationContext context) throws Exception {
MDC.put("cid", RandomStringUtils.randomAlphanumeric(16));
try {
return context.proceed();
} finaly {
MDC.remove("cid");
}
}
}

现在你所要做的就是添加:

%X{user}

到您的日志记录模式(logback.xmllog4j.xml)。

另见

关于java - EJB3 相关 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353532/

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