CXF:如何从 outFaultInterceptors 中的 Fault 中删除 <stackTrace>?

CXF : How to remove <stackTrace> from the Fault in outFaultInterceptors?

设置后

<cxf:properties> <entry key="faultStackTraceEnabled" value="true" /> </cxf:properties>

我能够获取堆栈跟踪。但我正在努力将其从外发消息中删除。

我尝试使用以下代码:

Fault fault = (Fault) message.getContent(Exception.class); StackTraceElement[] stackTrace = fault.getCause().getStackTrace(); List<StackTraceElement> tempList = new ArrayList<StackTraceElement>(Arrays.asList(stackTrace)); tempList.removeAll(tempList); stackTrace = tempList.toArray(new StackTraceElement[0]); fault.getCause().setStackTrace(stackTrace); message.setContent(Exception.class, fault);

即使最后一行使用空 stackTrace 设置回内容,但传出消息仍然具有完整的堆栈跟踪。

您能否提供一些代码片段如何删除 <stackTrace>

@soilworker 我能够实现我正在寻找的东西。我正在寻找用于日志记录的 stackTrace。

我删除了以下几行

<cxf:properties> 
    <entry key="faultStackTraceEnabled" value="true" /> 
</cxf:properties>` 

代码:

Fault fault = (Fault) message.getContent(Exception.class); 
String exceptionMsg = null; 
for (StackTraceElement element : fault.getCause().getStackTrace()) {  
     exceptionMsg = // concatenate 
} 

所以外发邮件中没有 <stackTrace>

但是知道如何在传出拦截器中修改传出故障(比如添加额外的标签)会很有趣。

谢谢。