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

时间:2015-04-21 22:55:42

标签: web-services cxf interceptor

设置后

<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>

1 个答案:

答案 0 :(得分:1)

@soilworker我能够实现我想要的目标。我正在寻找stackTrace进行日志记录。

我删除了以下行

syntax on

set tabstop=3
set shiftwidth=3

execute pathogen#infect()

filetype indent on
set smartindent 

代码:

<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 }

但知道如何在传出拦截器中修改传出错误(如添加其他标记)会很有趣。

感谢。

相关问题