用于Java的SCA客户机和实现模型(4)

http://www.itjxue.com  2015-07-17 01:13  来源:未知  点击次数: 

  从非 SCA 组件实现访问服务

 

  属于 SCA 模块一部分的非 SCA 组件使用模块上下文获取对服务的访问。它们在其实现中使用 ModuleContext 查找服务。它们通过 CurrentModuleContext 类获取对 current ModuleContext 的访问,如清单 15 中所示。

  清单 15. CurrentModuleContext 类

  非 SCA 组件实现将包括与以下所示类似的代码行,以获取对模块上下文的访问:ModuleContext moduleContext = CurrentModuleContext.getContext();

  错误处理

  调用服务方法客户机时可能会遇到以下异常:

  • 业务异常——由被调用的服务方法的实现引发。
  • SCA 运行时异常——由 SCA 运行时引发,指示组件的异常管理及与远程服务的交互中存在的问题。当前受支持的 SCA 运行时异常有服务运行时异常和服务不可用异常。

  异步编程

  在服务的异步编程中,客户机调用服务,并在不等待服务执行的情况下继续进行自身的执行。

  SCA 异步编程模型支持三种类型的异步调用。即:

  • 非阻塞方法调用
  • 对话服务
  • 回调
  • 非阻塞调用

  通过使用非阻塞调用,客户机可调用服务并立即继续进行后续处理,而不必等待服务执行。非阻塞方法使用 @Oneway Annotation 进行调用。当前 SCA 支持对返回“void”且没有已声明异常的方法进行非阻塞调用。

  对话服务

  服务的客户机和服务提供者之间的对话经常在远程服务执行期间发生。传统编程模型要求编写大量的代码来支持此模式。SCA 简化了对话服务的设计,而将 ID 生成、状态管理和路由的细节留给 SCA 容器处理。

  在 SCA 中,使用会话来维护有关客户机和远程服务间的单个对话的信息。SCA 使用 @Scope、@Session 和 @SessionID Annotation 来实现对话服务。

  回调

  回调服务提供从服务提供者回到其客户机的异步通信。双向服务使用的回调是具有两个接口的服务,一个供服务提供者使用,另一个供客户机使用。

  SCA 通过在远程服务接口上使用 @Callback Annotation 来提供回调服务(接受接口的 Java Class 对象作为参数)。

  清单 16 显示了 @Callback Annotation 的使用。

  清单 16. @Callback Annotation

  开放源代码运行时和工具

  有一个开放源代码项目提供服务组件体系结构的运行时实现,可用于运行 SCA 应用程序。此项目称为 Tuscany,目前在 Apache 处于孵化期。此项目的主要参与者有 IBM、BEA、Oracle、Sybase、SAP、IONA 和 Siebel。

  结束语

  本文分别通过 Java 接口和 Java 类组件实现描述了服务的表示形式和实现。文中说明了使用 Java Annotation 的服务实现的配置属性。您了解了从 SCA 和非 SCA 组件访问服务的各种方式,还了解了各种错误处理机制、异步编程模型和各种异步调用。

(责任编辑:IT教学网)

更多

推荐java认证文章