Apache Tuscany SCA Java 架构指南 www. 时间 : 2008-01-21 作者:佚名 编辑:本站 点击: 589 [ 评论 ] -
概况SCA JAVA 运行时是由内核和扩展两部分组成。内核本质上是一个连接多个VM的引擎,使用依赖注入(Dependency Injection 内核其核心是设计简单和功能有限的。它将不同的功能单元连接到一起,并且提供SPIs以让扩展之间可以互动,例如服务发现,可靠性,支持透明协议,等等。这些功能都以扩展的方式提供。 扩展扩展提高了SCA运行时的功能型。扩展类型并不固定,Tuscany的核心通过提供一个可调整的模型的设计使其尽可能的灵活。现在,已知的扩展类型有:
具体细节可参考扩展开发向导 JAVA SCA 运行时高层次概览下图是Java SCA运行时的一个高层次概览,其中包括以下关键模块:
bootsrapBootstrap 进程受主机环境控制。默认进程是由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部件组件处理器组件处理器被用来处理发布包中的组件,为了保持对发布服务可用,组件处理器需要使用组件处理扩展进行自我注册,组件处理器会在以下两个步骤进行调用:
加载JAVA SCASCA服务部件在SCA里以SCDL文件的形式进行部署,Tuscany运行时组件处理器加载这些SCDL到模型对象,这些对象包含了元数据。 有两种主要的加载器: 1、StAXElementLoader:从StAX 事件加载XML 2、ComponentTypeLoader:为一个实现加载组件类别或者处理一个文件 加载组件类别为实现规范加载组件类型定义 1、如何实现是实现规范 运行时组件的类图
|
|