管理失败的 SCA 事件

在处理“服务组件体系结构”(SCA) 请求时发生问题或响应消息在“恢复”子系统中创建失败的 SCA 事件时,必须决定如何管理此事件。 使用本主题中的信息帮助您标识和修订错误,以及从“恢复”子系统清除事件。

关于此任务

“服务组件体系结构”(SCA) 事件是服务应用程序收到的请求或响应。它可能来自于外部源,例如,入站应用程序适配器,或者 Web Service 的外部调用。事件由要操作的业务逻辑的引用及其数据(存储在“服务数据对象”中)组成。在收到事件时,将由相应的应用程序业务逻辑进行处理。

单个异常的线程可能分叉为多个分支。 单独分支通过此同一会话链接至主调用事件。如果由于系统故障、组件故障或组件不可用而无法运行分支中的业务逻辑,那么会创建失败事件。如果多个分支失败,那么将针对每个分支创建失败事件。“恢复”服务处理以下类型的失败的 SCA 事件:
  • 在 SCA 操作的异步调用期间发生的事件故障
  • 运行时异常导致的事件故障,例如,在业务逻辑使用的方法中未声明的任何异常
“恢复”服务不会处理来自于同步调用的故障。

“恢复”服务将失败的 SCA 异步交互发送至已在部署环境总线上创建的失败事件目标。失败事件的数据将存储在失败事件数据库中(缺省情况下,WPCRSDB)。可以在 Failed Event Manager 中查找数据。

失败的 SCA 事件通常具有与其相关的源和目标信息。源和目标基于故障点(调用失败的位置),而无论交互类型。考虑以下示例,其中组件 A 正在异步调用组件 B。请求消息从 A 发送至 B,并且从 B 至 A 返回响应回调消息。
  • 如果在初始请求期间发生异常,组件 A 是源,组件 B 是 Failed Event Manager 的目标。
  • 如果在响应期间发生异常,组件 B 是源,而组件 A 是 Failed Event Manager 的目标。
此模式适用于所有异步调用。

由于未将运行时异常声明为接口的一部分,因此组件开发人员应尝试解决异常,并防止不经意将运行时异常传播至客户机(如果客户机是用户接口)。

要管理失败的 SCA 事件,请执行以下步骤。

过程

  1. 使用 Failed Event Manager 已查找有关失败的 SCA 事件的信息,记录异常类型。
  2. 表 1 中查找异常类型以确定错误位置和可能的原因,以及管理失败事件的建议操作。
    表 1. 失败的 SCA 事件
    异常类型 错误可能的原因 建议的操作
    ServiceBusinessException 在业务操作执行期间发生业务异常。 查看异常文本以确定精确原因,然后执行适当的操作。
    ServiceExpirationRuntimeException SCA 异步消息传递已到期。 在服务引用上使用 RequestExpiration 限定符设置到期时间。

    调查服务未及时响应的原因。

    ServiceRuntimeException 在服务调用或执行期间发生运行时异常。 查看异常文本以确定精确原因,然后执行适当的操作。
    ServiceTimeoutRuntimeException 在配置的时间段内未收到异步请求响应。 在服务引用上使用 RequestExpiration 限定符设置到期时间。

    调查服务未及时响应的原因。

    ServiceUnavailableException 此异常用于指示在通过导入调用外部服务时抛出异常。 查看异常文本以确定精确原因,然后执行适当的操作。
    ServiceUnwiredReferenceRuntimeException 未正确连线用于调用服务的 SCA 引用。 查看异常文本以确定精确原因,然后执行适当的操作以正确连线 SCA 引用。