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>
。
但是知道如何在传出拦截器中修改传出故障(比如添加额外的标签)会很有趣。
谢谢。
设置后
<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>
。
但是知道如何在传出拦截器中修改传出故障(比如添加额外的标签)会很有趣。
谢谢。