栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

覆盖CXF错误处理

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

覆盖CXF错误处理

好的,经过大量研究,我发现了CXF错误处理的一些方法。

*。ValidationEventHandler使您可以抛出自己的异常,而不是标准异常。但是您不能更改响应行为,也不能更改SOAP响应格式。

*。改变错误处理的另一种方法是创建自己的拦截器。CXF工作流建立在拦截器链上。拦截器有4种类型:inInterceptor,outInterceptor,inFaultInterceptor和outFaultInterceptor。

使用一些聪明的技巧,您可以通过创建自己的拦截器(将其添加到链中)来更改工作流程,并从链中删除标准拦截器(如果您知道它的类名)。因此,您实际上可以执行所需的任何操作。

但是,就所有这些拦截器手动编组响应(xmlWriter.writeStartElement()等)而言,为每个流阶段编写自己的拦截器可能是一个巨大的挑战。这可能是一大笔工作。

不幸的是,我没有找到有关CXF拦截器的很好的参考。

另一件事-
如果您需要返回常规响应而不是SOAPFaultException,则可能需要其他信息,例如:返回此响应的实际服务,在请求中传递的服务参数等。我在拦截器的可访问参数中找不到此信息。而且,通过这样做,您肯定会欺骗将返回OK而不是实际异常的客户端代码。

*。用所有参数将wsdl设计为文本可能不是很好的解决方案:

一个。如果wsdl中没有数据类型和验证规则,您的服务使用者可能会感到非常困惑。

b。您需要“重新发明轮子”进行验证。我的意思是,您需要编写自己的验证器,这对于某些复杂的规则可能非常困难。同时,XSD实施了所有验证,并进行了良好的测试。

最后是我的情况:我们与需求管理器进行了讨论,并决定如果请求中违反XML模式要求,则允许CXF抛出它自己的标准异常。这是一个很好的解决方案,因为现在我们正在使用XSD验证的所有功能,并且不会在复杂而无用的工作上浪费时间。

非常感谢@ericacm的回答。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570460.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号