Apache Tuscany SCA Java 架构指南
www.firnow.com 时间 : 2008-01-21 作者:佚名 编辑:本站 点击: 589 [ 评论 ]
SCA JAVA 运行时是由内核和扩展两部分组成。内核本质上是一个连接多个VM的引擎,使用依赖注入(Dependency Injection)和控制反转( Inversion of Control)将构件连接在一起。
其核心是设计简单和功能有限的。它将不同的功能单元连接到一起,并且提供SPIs以让扩展之间可以互动,例如服务发现,可靠性,支持透明协议,等等。这些功能都以扩展的方式提供。
扩展提高了SCA运行时的功能型。扩展类型并不固定,Tuscany的核心通过提供一个可调整的模型的设计使其尽可能的灵活。现在,已知的扩展类型有:
具体细节可参考扩展开发向导
下图是Java SCA运行时的一个高层次概览,其中包括以下关键模块:
Bootstrap 进程受主机环境控制。默认进程是由DefaultBootstrapper实现的。运行时进程服务使用SCA XML形式进行集成,也可以采用其他形式:
SCA的装配模型在Tuscany中是通过一系列接口实现的。以下是一些关键件:
Tuscany运行时提供了一个框架,以支持SCA发布。该框架可针对以下扩展点进行扩展:
PackageProcessorExtensionPoint:负责处理不同的包或者档案格式,例如:文件夹、JAR包、osgi包、EAR、WAR以及ZIP。
ArtifactProcessorExtensionPoint:负责处理具体类型的服务,例如:WSDL、XSD、构件、JAVA类、BPEL。
实现扩展负责支持实现方式的类型:比如Java、Script、BPEL等。
绑定扩展负责支持绑定方式的类型:Web服务、JMS、JSON-RPC以及RMI。
接口扩展负责支持接口的类型,例如Java接口和WSDL1.1 portType。
在一个复合组件在配置好以后,它可以在SCA域进行激活,Tuscany运行时通过以下步骤去激活它:
1、构建:在此阶段,复合组件被进一步常态化,以更容易和运行时互动,元数据在服务/引用升级以后进行合并。基于扁平的模型,我们可以在构建级获取全部的信息。
2、配置:在此阶段,复合组件的层次被引导到配置一个组件的实现,在组件间以及组件和外部服务之间,引用绑定和服务绑定会在以后的步骤中用来创建运行时连接。
3、创建运行时连接: 在此阶段,通过选定的绑定方式,创建了组件引用和组件服务的运行时连接。运行时连接是调用链的集合。每个执行链包含一组执行器和拦截器。执行器为绑定协议和实现技术提供调用的逻辑,拦截器是一种特殊的执行器,它为方法执行提供了附加的逻辑,例如数据转换以及交易控制。对于一个组件引用来说,我们创建运行时连接来表示通过绑定的对外执行;对于组件服务呢,我们创建运行时连接表示对实现类型的向内连接。回调连接可以被附加到组件服务之上,表示来自服务的回调执行。
4、启动服务组件:在这个阶段,ImplementationProvider, ReferenceBindingProvider和ServiceBindingProvider 定义的start() 回调方法将被调用,最后,组件、组件引用以及组件服务被初始化去服务组件间的互动。服务监听器被启动已接受从绑定层来的连接请求。
1、调用被分派到WireInvocationHandler
2、WireInvocationHandler 寻找正确的InvocationChain
3、创建一条消息,设值payload,设值TargetInvoker,然后将消息通过链向下传递
4、当消息到达链的底部后,TargetInvoker 会被调用,它按顺序对目标进行调度
5、当将TargetInvoker 存储后,当连接源的可视范围等于或小于目标时(例如:request-》composite),外向端允许将目标实例进行缓存。
运行时提供具有InboundWires 和OutboundWires的构件。InvocationChains 被构件连接所持有,因此它是无状态的,允许引入新的拦截器以及重新连接等动态事件的发生。
组件处理器被用来处理发布包中的组件,为了保持对发布服务可用,组件处理器需要使用组件处理扩展进行自我注册,组件处理器会在以下两个步骤进行调用:
SCA服务部件在SCA里以SCDL文件的形式进行部署,Tuscany运行时组件处理器加载这些SCDL到模型对象,这些对象包含了元数据。
有两种主要的加载器:
1、StAXElementLoader:从StAX 事件加载XML
2、ComponentTypeLoader:为一个实现加载组件类别或者处理一个文件
为实现规范加载组件类型定义
1、如何实现是实现规范
联系客服