我无法让CXF 2.7.x' Handlers
使用WebSphere v7(没有处理程序的Web服务可以相应地工作),但是,我想知道是否可以访问堆栈跟踪,如果由Web服务抛出,通过CXF的Handler
(不是拦截器)?
即如果我实施SOAPHandler<SOAPMessageContext>
,我是否可以通过public boolean handleFault(SOAPMessageContext ctx)
来捕获ctx.getMessage().getSOAPBody().getFault()
中的堆栈跟踪?
通常,当抛出异常时,我会在SOAP响应的详细信息中看到一个简短的描述,所以我不知道SoapFault
对象是否会包含有关堆栈跟踪的信息!
我要问的原因是,在能够让CXF Handler使用WebSphere之前,我需要知道在handleFault()
中寻找堆栈跟踪是否是一个可行的选择,或者我是否会错误兔子洞。
答案 0 :(得分:1)
使用CXF JAX-WS服务在Handler
中使用堆栈跟踪的一种方法是在配置文件中启用该选项,即 Spring :
<cxf:bus>
<cxf:features>
<cxf:logging/>
</cxf:features>
<cxf:properties>
<entry key="faultStackTraceEnabled" value="true" />
</cxf:properties>
</cxf:bus>
但是,如果您希望只能访问堆栈跟踪内容而不是将其发送回服务使用者,则必须手动/以编程方式获取<stacktrace>
元素并将其内容设置为空,或者更好,删除元素本身。