那是“之后且仅在之后”一个异常,因为我被告知要预先设置它是我们不想要的性能损失,因为这将是针对每个调用而不仅仅是针对异常。当然是有道理的,但我肯定不知道在异常之后如何做到这一点。
用例是这样的:有些人,也许是坏人,向我们发送了一些坏 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,这一事实尤其令人讨厌。