科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道WebSphere Process Server 和 WebSphere Enterprise Service Bus 中的异常处理

WebSphere Process Server 和 WebSphere Enterprise Service Bus 中的异常处理

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文阐述如何在 WebSphere Process Server 和 WebSphere Enterprise Service Bus 中捕获并处理错误条件,并介绍问题检测、重试行为、异常传播和报告。

作者:ibm 来源:ibm 2007年10月6日

关键字: 技术 WEBSPHERE IBM 中间件

  • 评论
  • 分享微博
  • 分享邮件

引言

在生产环境中运行企业应用程序时,了解故障条件下系统的行为非常重要。本文介绍 IBM® WebSphere® Process Server(以下称为 Process Server)和 IBM WebSphere Enterprise Service Bus(以下称为 Enterprise Service Bus)中的异常的基本类别。本文介绍:

  • 系统在遇到问题时有何行为
  • 在何处记录问题
  • 如何从各种问题中恢复

SCA 入门知识

在深入研究错误处理之前,您需要了解服务组件体系结构 (SCA) 的一些基础知识,其中包括接口类型、调用模式和异常类别。

接口类型

SCA 支持两种接口类型:

JTtype
使用 Java™ 接口定义
WType
使用 WSDL 端口类型定义

该类型用于描述接口和引用。使用引用的客户端编程人员必须与基于类型的引用交互。调用或服务提供程序的目标是可以使用引用方式不同的类型(J 类型或 W 类型)。SCA 将消除该差异。

可以在 JType 和 WType 接口上声明业务异常。JType 接口使用一个抛出子句,而 WType 接口则是声明错误。

调用模式

SCA 提供以下两种调用样式:

同步
阻止对目标进行的请求和在同一线程上返回的响应。
异步
不阻止进行的请求,并在单独的线程中提供响应。

在异步样式中,SCA 异步编程模型提供三种类型的异步调用模式:

单向
作为“即发即弃”(Fire and Forget) 调用模式使用。客户端调用通过引用提供的操作,并立即返回控制。不返回任何响应、异常或错误。
延迟响应
请求–响应异步调用模式。客户端进行请求,并在客户端适宜时间请求响应。
回调
请求–响应异步调用模式。当响应准备就绪时,客户端实现由 SCA 运行时调用的回调接口。

了解调用模式之间的差异对理解您可能面临的错误条件至关重要。

异常类别

在 Process Server 和 Enterprise Service Bus 中,应用程序是使用 SCA 编程模型构建的。它定义两种类型的错误条件:业务异常和系统异常 – 在编程模型中称为 ServiceBusinessException 和 ServiceRuntimeException。

业务异常

业务异常是在 业务方法的函数签名中声明的、经过检查的异常(WSDL 错误或 Java 抛出)。使用业务异常可标识应用程序或服务预期的错误条件。一个示例是用于股票报价服务的 InvalidSymbolException。此类异常由 ServiceBusinessException 包装,并传递回客户端。

系统异常

系统异常也称为运行时异常。它们 不是在方法签名中声明的。通常,它们表示应用程序无法预知的错误条件,如 Java 组件中的 NullPointerException。这些异常由 ServiceRuntimeException 包装,并传递回客户端,该客户端可以查询 ServiceRuntimeException 来确定原因。

在 SCA 编程模型中,将一些内置系统异常定义为 ServiceRuntimeException 的子类:

ServiceExpirationRuntimeException
指示异步 SCA 消息已过期。可以使用服务引用上的 RequestExpiration 或 ResponseExpiration 限定符设置过期时间。
ServiceTimeoutRuntimeException
指示在指定的时间限制内不接收对异步请求的响应,该时间限制是在使用延迟响应异步通信模式时,在 invokeResponse() 调用过程中以编程方式设置的。
ServiceUnavailableException
指示在通过导入调用外部服务时抛出异常。
ServiceUnwiredReferenceRuntimeException
指示组件上的服务引用连接不正确。

异步调用的异常处理

当同步调用服务组件时,客户端和服务提供程序在同一线程中执行。目标可以向客户端返回响应消息、异常返回,或者不返回任何内容(在单向操作中)。如果结果为异常,则它可以是业务异常或系统异常。本例中的客户端可以是应用程序代码或系统代码的某一形式。


图 1. 调用组装图
调用组装图

下面是一个示例客户端,它调用使用 JType 接口声明的 Java 组件。该接口具有一个按以下方式声明的方法:


清单 1. 股票报价接口

                
public interface StockQuote {
float getQuote(String symbol) throws InvalidSymbolException;
}

客户端代码与以下内容类似:


清单 2. 股票报价同步客户端报价

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章