技术开发 频道

如何处理Web服务异常

    非常好的实践

    分布式系统的异常处理很复杂、具有挑战性,这需要全面考虑。由于基于标准的错误传送可使用SOAP错误结构,现在可以跨程序、硬件和系统等界限,使用异常传送和处理机制。不过,由于使用这种基于网络的错误传送机制,就加大了为异常处理合理编写代码的负担。要是没有严谨、慎重的Web服务异常处理机制,最终会把内部组件的细节暴露给外部使用者。这种信息泄漏轻则导致陷入难堪处境,重则会加大公司承担的责任。处理SOA内部异常的一些非常好的实践包括如下:

    ● 应当只抛出由使用者使用的异常。

    ● 对外型Web服务的所有能够恢复的异常都应当加以清理或者遏制。

    ● Web服务开发人员应当预料到异常,并通过try-catch和if-then-else类型结构,为所有预料到的异常提供合适的处理机制。

    ● 安全管理员应当通过使用SOA/Web服务网关来集中Web服务流,那样通过SOA传送的所有堆栈跟踪都会得到检查和控制,之后SOAP消息才可以离开企业边界。内部Web服务的要求可能不如SOAP错误中出现的对外型Web服务来得严格。

    ● Web服务开发人员应当结合使用try-catch和if-then-else语句用于异常处理。Try-catch应当用做比较通用的异常处理结构,这种情况下不是什么都能预料到的。要记住:try-catch使用过多会给性能带来影响。

    ● 对预料及暴露基于Web服务的复杂、分布式的SOA中的错误条件而言,严格的自动化边界条件测试非常重要。

    ● Java抛出专门的SoapException,它会自动创建SOA错误。开发人员也可以创建SoapException,把定制的异常代码和额外信息放到异常里面。使用这种机制,只要创建定制的SoapException,就可以随时传送简单的错误代码;而不是给使用者带来这种负担:解析由普通的SoapException传送的大型、有时随意的字符串。

0
相关文章