0

那是“之后且仅在之后”一个异常,因为我被告知要预先设置它是我们不想要的性能损失,因为这将是针对每个调用而不仅仅是针对异常。当然是有道理的,但我肯定不知道在异常之后如何做到这一点。

用例是这样的:有些人,也许是坏人,向我们发送了一些坏 SOAP,而调度程序抛出了 SaajSoapEnvelopeException。我该如何优雅地处理这个问题?

到目前为止,我拥有的是 MessageDispatcherServlet 的扩展,它覆盖了 doService() 方法。web.xml 文件已更新以显示此 Dispatcher for Spring 的配置。在此覆盖中,使用 try/catch 包围对 super 方法的调用,您会捕获异常,但这里的问题是 HttpServletRequest 的流已经关闭,因此您无法从此处获取 SOAP,AFIK。

另一个问题是我无法让编组器在这里接线。我有我想使用的 WSDL 生成的 Java 错误,但我认为在非端点类中连接编组器存在问题。也许关于命名空间?我可能需要了解这些是如何工作的。

底线:是否有可能在异常之后获取 SOAP,或者是否可以预测会有异常,以便我可以提前抓住它?另外,我怎样才能在这个 Dispatcher 中加入故障编组器,或者我必须对故障的文本版本进行 BS 处理?

我对 Web 服务相当陌生,到目前为止我所知道的主要是 CXF。到目前为止,我对 Spring WS 印象并不深刻。恕我直言,他们还有很长的路要走。由于与 WSDL 中的 XSD 引用有关的已知错误未正确重命名以匹配 bean,因此我无法从服务中获取 WSDL,这一事实尤其令人讨厌。

4

1 回答 1

0

您是否尝试过EndpointExceptionResolver?例如,我用一个来捕获和翻译身份验证异常。

您可能还需要一个EndpointInterceptor来包装异常解析器。

于 2012-10-26T12:29:28.837 回答