【问题标题】:How to propagate CXF exceptions from server to client如何将 CXF 异常从服务器传播到客户端
【发布时间】:2013-04-05 10:48:06
【问题描述】:

我有一个 WSDL First Apache CXF Web 服务,它按预期工作,除了我在服务器端抛出的异常在客户端上没有收到。 相反,在客户端,我得到一个 SOAPFaultException 类型的异常,其中只有 detailMessage 包含来自原始服务器端异常的消息,但我想接收我在服务器端抛出的确切异常类型,包括原因链。

我希望默认情况下它会像这样工作,但它肯定不会在我的系统中。我一直在检查 CXF 文档以找到有关如何实现此目的的提示,但到目前为止我还没有发现任何有用的东西。

【问题讨论】:

    标签: java cxf


    【解决方案1】:

    SOAP 引用不支持堆栈跟踪。如果需要,您需要将堆栈跟踪复制为 SoapFault 返回的消息。

    使用 CXF,您可以通过在收入拦截器链上添加拦截器来实现。拦截器的创建方法请参考this question

    你应该把它放在 POST_INVOKE 阶段。

    【讨论】:

    • 感谢您解决这个问题。我想我只是因为 CXF 的 wsdl2java 工具会为它在 wsdl 文件中找到的每个 Soap 错误生成异常类,所以我有点期待这种支持。但是实例化和抛出这些会导致它们仍然在服务器端被捕获。我决定更改我的设计并简单地更改我的操作返回类型以包含异常信息,而不是将它们嵌入到 SoapFault 中。特别是因为我的例外与肥皂无关。
    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多