扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:Sreedevi Penugonda 来源:论坛整理 2007年11月17日
关键字:
在本页阅读全文(共4页)
属于 SCA 模块一部分的非 SCA 组件使用模块上下文获取对服务的访问。它们在其实现中使用 ModuleContext 查找服务。它们通过 CurrentModuleContext 类获取对 current ModuleContext 的访问,如清单 15 中所示。
清单 15. CurrentModuleContext 类
package org.osoa.sca;
public final class CurrentModuleContext {
public static ModuleContext getContext() {... }
}
非 SCA 组件实现将包括与以下所示类似的代码行,以获取对模块上下文的访问:ModuleContext moduleContext = CurrentModuleContext.getContext();
错误处理
调用服务方法客户机时可能会遇到以下异常:
异步编程
在服务的异步编程中,客户机调用服务,并在不等待服务执行的情况下继续进行自身的执行。
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
package somepackage;
import org.osoa.sca.annotations.Callback;
import org.osoa.sca.annotations.Remotable;
@Remotable
@Callback(MyServiceCallback.class)
public interface MyService {
public void someMethod(String arg);
}
@Remotable
public interface MyServiceCallback {
public void receiveResult(String result);
}
开放源代码运行时和工具
有一个开放源代码项目提供服务组件体系结构的运行时实现,可用于运行 SCA 应用程序。此项目称为 Tuscany,目前在 Apache 处于孵化期。此项目的主要参与者有 IBM、BEA、Oracle、Sybase、SAP、IONA 和 Siebel。
结束语
本文分别通过 Java 接口和 Java 类组件实现描述了服务的表示形式和实现。文中说明了使用 Java Annotation 的服务实现的配置属性。您了解了从 SCA 和非 SCA 组件访问服务的各种方式,还了解了各种错误处理机制、异步编程模型和各种异步调用。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者