java - 使用 CXF 处理程序捕获堆栈跟踪

标签 java websphere cxf handler stack-trace

我无法获取 CXF 2.7.x 的 Handlers使用WebSphere v7(没有处理程序的Web服务也可以相应地工作),但是,我想知道是否可以通过CXF的Handler访问堆栈跟踪(如果由Web服务抛出) (不是拦截器)?

也就是说,如果我实现 SOAPHandler<SOAPMessageContext> ,我是否能够捕获 public boolean handleFault(SOAPMessageContext ctx) 中的堆栈跟踪,通过,比如说,ctx.getMessage().getSOAPBody().getFault()

通常,当抛出异常时,我会在SOAP响应的错误详细信息中看到简短的描述,所以我不知道是否SoapFault对象首先会包含有关堆栈跟踪的信息!

我问的原因是,在能够让 CXF Handler 与 WebSphere 一起工作之前,我需要知道是否在 handleFault() 中寻找堆栈跟踪是一个可行的选择,还是我走错了路。

最佳答案

让 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>元素并将其内容设置为空,或者更好的是,删除元素本身。

关于java - 使用 CXF 处理程序捕获堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23190025/

相关文章:

python - 名称错误 : True when using boolean values in jython on wsadmin cli utility

java - 如何将 CXF 异常从服务器传播到客户端

java - 删除字符串中引号之间的注释

c# - AES 加密 C# 解密 Java?

java - 与 C++ 相比,Java 中的访问修饰符

java - 线程模板

java - 部署 Web 服务时出现 Websphere 错误

java - WebSphere 中 Tomcat 的 BeanFactory 模拟

java - Apache CXF - 没有任何策略替代方案可以得到满足异常

java - CXF wsdl2java 导致 BINDING_MISSING_TYPE