尽展体育的魅力,创造历史辉煌!2008让我们为奥运加油,为中国加油!
 
 奥运金牌榜
  
  高级搜索
  首页   技术论坛   博客   产品中心   资源中心   银弹在线   商城  





SCA的java注解和API规范v100    
#1楼
给作者发送短消息 给作者发送短消息 实名会员 
查看用户其他信息
总分 126 分
财富 547 goCom币
威望 53
排名 :(
段位 新手必读
翻译自apache Tuscany子项目的SCA的Java注解和API规范V100

通用Annotation,API,客户程序和实现模型

1.1    简介
       SCA通用注解(annotaion),API函数,客户程序和实现模型为SCA装配模型规范中定义的编程理念制定了Java语法规则。他规定了一系列能用于基于Java的SCA规范的API和注解。
       特别地,该规范包括以下内容:
1. 实现了指定组件服务,引用和属性的元数据
2. 客户端和组件API的J3. 元数据,用于异步和同步的服务。
3. 回调机制的元数据
4. 标准组件实现范围的定义
5. Java到WSDL和WSDL到Java的映射
6. 安全策略注解
注意个别的编程模型在某些适当的时机也许会选择用本地的API和本地方言来实现自己对装配模型理念的映射。
规范注解,API,客户端以及实现模型的目标是提升一致性以减少各种Java相关的组件实现类型规范的副本。本规范中制定的注解,API,客户端以及实现模型是为被其他基于Java的SCA规范所使用而设计的。
本文档使用J2SE 5的注解技术来实现元数据。然而,SCA也允许服务的客户端和实现用J2SE1.4来开发。所有注释代表的元数据也可以使用组件类型文件来表述,该组件类型文件也在SCA装配规范中定义了。
 
1.2    实现元数据
       这一节描述了基于Java技术的SCA元数据是如何应用到基于Java的实现中的。
1.2.1          Service元数据
1.2.1.1    @Service
       @Service注解被用在java类上来指定服务实现的接口。一般来说,服务接口用以下的方法之一来定义:
l         作为一个Java接口
l         作为一个Java类
l         作为一个从Web service描述语言产生的Java接口(一般总是远程接口)
1.2.1.2    远程服务的Java语义
       远程服务在定义了服务的Java接口上使用@Remotable注解来定义。远程服务规定用语粗粒度的服务,参数以传值的方式传递。
1.2.1.3    本地服务的Java语义
       本地服务只能被和本地服务组件实现部署在同一个地址空间的客户端程序访问。本地接口可以是不带@Remotable注解的java接口或java类
下面的代码片段显示了本地服务的Java接口
package services.hello;
 public interface HelloService {
 String hello(String message);
 }
本地接口一般是细粒度的,用于紧密联系的交互。
调用本地接口的数据交换语义是通过引用(by-reference)。这个意味着代码必须由知道参数的改变模式的客户端或服务的提供者所开发出来。
1.2.2    @Reference
    通过定义服务接口的属性域、setter方法或构造函数并加入@Reference注解来使用引用注入来访问服务。
1.2.3    @Property
    实现能通过属性来进行配置,属性在SCA的装配规范里也定义了。@Property注解用于定义SCA 属性。
1.2.4          实现的作用域:@Scope,@Init,@Destroy
       组件实现也能管理他们自己的状态或让SCA运行时环境来做这些工作。后一种情况下,SCA定义实现作用域,该作用域指定了实现和SCA运行时环境的可见性和生命周期契约。组件提供的服务调用由SCA运行时环境根据实现作用域的语义来分发到每个实现的实例上去。
作用域在实现类上用@Scope注解来指定。
该文档定义了四种基本的作用域:
l         STATELESS
l         REQUEST
l         CONVERSTATION
l         COMPOSITE
基于Java的实现可以选择去支持这些作用域,也可以定义一个新的作用域。
实现的类型也允许组件实现声明生命周期方法,用于实现被实例化或作用域过期时调用。@Init指示在作用域的生命周期中第一次使用实例的时候被调用。@Destroy表示函数当作用域结束的时候被调用。注意,只有公共的无参数的方法才能做为生命周期函数被注解。
@Init
 public void start() {
...
}
@Destroy
public void stop() {
...
}
 
接下来的章节给出四个标准的基于Java的实现类型作用域。
1.2.4.1 Stateless
       对于无状态组件,服务请求之间没有隐式的关联。
1.2.4.2 Request
       请求作用域的生命周期是从远程接口上的请求进入到SCA运行时环境开始,一个线程处理该请求,直到线程同步地完成此请求为止。这期间,所有的服务请求将被委托给相同请求作用域组件的实现实例。
       很多次,当本地的请求作用域服务被调用,在调用栈中没有早期的远程服务。例如,本地服务被非SCA实体调用的时候。这些情况下,远程请求总是被认为是存在的,但请求的生命期限依赖于实现。比如,一个时间事件将作为一个远程请求对待。
1.2.4.3 Composite
       所有的服务请求被分发到同一个实现的实例,是因为容器构件的生命期限。容器构件的生命期限是作为激活和钝化的时间来定义的,可以是正常的也可以是异常的。
       构件作用域的实现也许还会用@EagerInit注解来指定渴望初始化。当标注了渴望初始化的话,在容器组件启动的时候就会创建构件作用域的实例。假如一个方法被标住了@Init注解,当实例创建的时候就会被调用。
1.2.4.4 Conversation
       会话是指定义了客户与目标服务之间的一系列相关的交互。当第一个服务请求被分发到某个提供了会话服务的实现实例的时候,会话作用域就开始了。当服务契约定义的某个终端操作被调用之后,并完成处理或会话过期,会话作用域就完成。一旦这个发生,运行时必须保证保存有实现实例的状态。
       注意,当一个会话服务是被一个标注了会话范围的Java类实现的时候,SCA运行时环境将会透明地处理实现的状态。当然,也可能由实现自己来管理自己的状态。比如,一个stateless或其他作用域的Java类能实现会话服务。

 

to be continue........ 

 




发表回复
账号用户名   密码   登录
内容:url email imgsrc image code quote
范例 Example
bold italic underline linethrough   


 [更多...]