gpt4 book ai didi

java - 用于清理 MDC 的 CXF 拦截器阶段

转载 作者:行者123 更新时间:2023-11-30 08:18:55 25 4
gpt4 key购买 nike

对于哪个 Apache CXF 阶段 Hook 出站拦截器以清理 SLF4J 映射诊断上下文 (MDC),您有什么建议吗?

我看到一些 code available publicly on GitHubPhase.PRE_STREAM 触发日志记录上下文的清除。我的第一个想法是在最后一个 Phase.SETUP_ENDING 调用它。

编辑:部署后,我意识到我还需要将它连接到 outFaultInterceptors。为了让它工作,我必须将 Phase.SETUP_ENDING 更改为 Phase.MARSHALL。但我不知道为什么或者这是否是最好的阶段。

我是 Apache CXF 的新手,想确保我不会使用错误的阶段破坏某些东西。

这是我的代码

import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.slf4j.MDC;

public class MdcCleanUpInterceptor extends AbstractPhaseInterceptor<Message> {

public MdcCleanUpInterceptor() {
super(Phase.MARSHAL);
}

@Override
public void handleMessage(Message message) {
MDC.clear();
}
}

和我的 Spring 定义

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">
<cxf:bus>
<cxf:outInterceptors>
<ref bean="mdcCleanUpInterceptor"/>
</cxf:outInterceptors>
<cxf:outFaultInterceptors>
<ref bean="mdcCleanUpInterceptor"/>
</cxf:outFaultInterceptors>
</cxf:bus>

<bean id="mdcCleanUpInterceptor" class="MdcCleanUpInterceptor"/>
</beans>

最佳答案

我使用了 POST_MARSHALL。这样,当输出通过编码阶段时,MDC 仍在上下文中,并且它仍然作为 outFaultInterceptor 工作。

关于java - 用于清理 MDC 的 CXF 拦截器阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27133695/

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