在Spring WS中,如何处理SaajSoapEnvelopeException并在异常后获取SOAP的副本?

时间:2012-10-20 19:29:54

标签: soap spring-ws fault

那是“After After Only After”一个Exception,因为我被告知要预先设置它是一个我们不想要的性能打击,因为这将是针对每个调用而不仅仅是针对Exception。理所当然,但我肯定不知道如何在异常之后完成它。

用例是这样的:有些人,也许是坏人,给我们发送了一些不好的SOAP,调度员丢掉了一个SaajSoapEnvelopeException。我如何优雅地处理这个问题?

到目前为止,我所拥有的是MessageDispatcherServlet的扩展,并覆盖了doService()方法。 web.xml文件已更新,以显示此Spring的配置调度程序。在这个覆盖中,用try / catch包围对super方法的调用,你捕获Exception,但问题是HttpServletRequest的流已经关闭,所以你不能从这里获取SOAP,AFIK。

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

底线:是否有可能在异常之后获取SOAP ,或者是否可以预测会有异常以便我可以预先获取它?另外,如何将故障编组器输入此Dispatcher中,或者我是否必须将故障的文本版本标记为BS?

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

1 个答案:

答案 0 :(得分:0)

你试过EndpointExceptionResolver吗? 例如,我用一个来捕获和转换身份验证异常。

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