快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和记娱棒h88285:Apache Tuscany SCA Java架构指南



概述

SCAJava运行时由core和extension组成。Core本色上来说是一个多VM的wiring引擎。该引擎应用IOC(节制反转)和DI(依附注入)原则来连接组件。

Core

Core在机能方面是简单而有限的。它将功能单元连接在一路,并供给可以和extension交互的SPI机制。例如象办事发明,靠得住性,对传输协议的支持等特点都是经由过程extension来做的。

Extension

Extension增强SCA运行时的功能。Extesion类型不是固定的。而core则是经由过程供给对extension模块开放支持来使得设计只管即便机动。

组件实现类型,例如:Spring, Groovy 和Javascript

绑定类型,比如:Axis, CXF ,AMQP ,ActiveMQ, JXTA

数据绑定类型,比如:JAXB, SDO ,XmlBean

接口绑定类型,比如:WSDL, Java

关于若何实现一个extension的具体信息可以在Extensions Guide中查看。

运行时

Core是设计得可以嵌入于许多不合的主机情况下的。例如,core大概用于OSGI容器、零丁的运行时情况、serlvet引擎或J2EE利用办事器中。运行时的机能根据主机情况不合而不合。

Java SCA运行时的高层概述:

下图是由关键的模块/包组成的SCA运行时高层视图

1、 SCA Spec API:由SCA Java Client and Implementation定义的API

2、 API:扩展了SCA Spec API的Tuscany API

3、 Core:运行时实现和SPI扩展机制

4、 Extension:

1. Component(英文原版有差错) implementation – 扩展说话支持:例如 BPEL,Python,C++,Ruby等

2. Binding – 扩展协议支持:例如 Axis2, CXF等

3. Interface Binding – 扩展办事定义类型:比如SWDL, Java等

4. Databinding – 扩展数据支持:比如SDO, JAXB等

5、 Host platforms:Tuscany运行时的主机情况

内部高层视图

参考下图:

向导历程

向导历程是由主机情况节制的。默认的实现是DefaultBootstrapper。运行时由某个成型的SCA Assembly XML文件序列化而来并处置惩罚办事装置。

装载阶段处置惩罚SCDL并创建一个内存模型处置惩罚响应的运行时工件(例如组件componet,办事service,引用reference)

连接阶段将对办事的引用连接起来

装置模型

SCA装置模型在Tuscany中是用一系列接口表示的。如下是些关键的元素。

SCA component 是设置设置设备摆设摆设化的SCA实现的实例,它可以供给办事或破费办事。

SCA service用于声明实现的可以被外部造访的办事

SCA reference用于表示该实现对某些其他实现所供给的办事的依附。该依附的办事可以经由过程设置设置设备摆设摆设来指定。

Implementation是用于描述软件技巧的观点,例如在面向办事的利用中实现了一个或多个办事的Java 类,BEPL,XSLT转换,C++类。SCA composite也是implementaion。

ComponentType涉及实现的可设置设置设备摆设摆设的方面。

Interface定义了一个或多个营业功能。这些营业功能经由过程Service供给,经由过程Reference让其他组件应用。办事是由实现的接口来定义的。现在SCA支持两种接口类型系统:Java接口、SWDL portType

SCA composite是SCA域中的compositon的根基单元。SCA Composite是组件的装置,办事、利用和wire都相互连接。

SCA wire将办事引用连接到办事上。

Binding是被办事和引用所应用的。引用应用绑定来描述造访机制,该机制用于造访连接的办事。办事应用绑定来描述客户法度榜样调用办事的造访机制。

Property是斟酌到有的实现设置设置设备摆设摆设必要显式地设置数据值。该数据值由组件供给,当然也可能滥觞于容器composite的属性。

Contribution

Tuscany运行时供给了一个框架来支持SCA的contribution。框架可以经由过程下列的两个扩展点来扩展:

PackageProcessorExtensionPoint:它用于处置惩罚不合的包装款式或归档的扩展,可所以目录、Jar、OSGI bundle、EAR、War或Zip。

ArtifactProcessorExtensionPoint:它用于处置惩罚特定工件类型的扩展,可所以SWDL,XSD,composite,java类后BEPL。

l 包处置惩罚器会扫描安装了的contribution,并孕育发生必要处置惩罚的工件列表。当前有支持文件夹/文件系统和 Jar contribution包。为了让contribution办事有效,包处置惩罚器要注书自己给包处置惩罚extension 。

l 工件处置惩罚器用于处置惩罚contribution上的每个有效的工件。为了让contribution办事有效,工件处置惩罚器要注书自己给工件处置惩罚extension 。对付每个工件,工件处置惩罚器分两个阶段被调用。

? 读阶段:这里是你读取工件(可所以一个文档、XML元素或类等等)的地方,组装描述工件的模型并返回它。SCA  contribution办事在所有注册了工件处置惩罚器的工件上调用ArtifactProcessor.read()。要是你的模型引用了其他的模型,不必要立即装载那些模型,你只必要维持描述引用的信息,在resolve阶段,你将会把该信息转换成指向被引用模型的指针。留意:你没有需要在这个时候完全读取并装载模型,你可以在今后来完成这些事情。

? 解析阶段:这个阶段让你有时机解析对其他模型的引用。这个时候,SCA contribution中所有的描述工件的模型都已经读取,并注册了工件解析器,筹备被解析。

l 所有可支配的composite应该在现在筹备支配到SCA域中。

包处置惩罚器会扫描安装了的contribution,并孕育发生必要处置惩罚的工件列表。当前有支持文件夹/文件系统和Jar contribution包。为了让contribution办事有效,包处置惩罚器要注书自己给包处置惩罚extension 。

工件处置惩罚器用于处置惩罚contribution上的每个有效的工件。为了让contribution办事有效,工件处置惩罚器要注书自己给工件处置惩罚extension 。对付每个工件,工件处置惩罚器分两个阶段被调用。

? 读阶段:这里是你读取工件(可所以一个文档、XML元素或类等等)的地方,组装描述工件的模型并返回它。SCA contribution办事在所有注册了工件处置惩罚器的工件上调用ArtifactProces和记娱棒h88285sor.read()。要是你的模型引用了其他的模型,不必要立即装载那些模型,你只必要维持描述引用的信息,在resolve阶段,你将会把该信息转换成指向被引用模型的指针。留意:你没有需要在这个时候完全读取并装载模型,你可以在今后来完成这些事情。

? 解析阶段:这个阶段让你有时机解析对其他模型的引用。这个时候,SCA contribution中所有的描述工件的模型都已经读取,并注册了工件解析器,筹备被解析。

所有可支配的composite应该在现在筹备支配到SCA域中。

实现扩展

实现扩展认真实现类型的支持,例如Java,Script和BEPL

绑定扩展

绑定扩展认真对绑定类型进行支持,例如web service,JMS,JSON-RPC和RMI

接口扩展

接口扩展认真接口类型的扩展,例如Java接口和WSDL 1.1 portType

数据绑定扩展

请看我翻译的Tuscany数据绑定指南

Composite 激化

在composite完备地设置设置设备摆设摆设后,就能在SCA域中激活它。Tuscany运行时用以下步骤激化composite:

1、 构建composite:这个阶段,composi和记娱棒h88285te模型更进一步地正规化来方便运行时的交互。元数据在service/reference提升后统一化了。根据这个扁平模型,我们可以获取所有的组件级信息。

2、 设置设置设备摆设摆设composite:这个阶段,composite层次布局用于导航组件实现的设置设置设备摆设摆设信息。引用绑定和办事经由过程供给者工厂来创建运行时组件以及外部办事之间的连接。

3、创建运行时连接(wire):这个阶段,为组件引用和组件办事以选定的绑定形式创建运行时连接。运行时连接是一个调用链的聚拢。这些调用链按照操作来分成区。每个调用链都由一系列的调用器和拦截器构成。调用器供给到绑定协讲和实现技巧的逻辑调用。拦截器是特定类型的调用器,为调用它供给了附加的功能,比如数据传输和事务节制。对付一个组件引用,我们创建运行时连接(wire)来描述以选定绑定的形式对外的调用。对付组件办事,我们创建运行时连接 (wire)来描述对实现的对内调用。回调连接(callback wire)能附加到组件办事上来描述来自办事的一个回调调用。

4、启动composite:这个阶段,由ImplementationProvider、ReferenceBindingProvider和 ServiceBindingProvider定义的start()回调措施会被调用。终极,组件,组件引用和组件办事被初始化而办事于组件和记娱棒h88285的交互。办事 监听 器会启动,从而吸收来自绑定层(binding layer)的入内哀求。

调用概述

调用会被分发到WireInvocationHandler

WireInvocationHandler查找精确的InvocationChain

然后创建一个消息,设置有效负载,设置TargetInvoker,并通报消息给下层链

当消息到达链的末尾,TargetInvoker会被调用,现在轮到TargetInvoker认真叫调用分发到目标

存储在outbound界限上的TargetInvoker当连接源的感化域值即是或小于目标的感化域值时,容许缓存目标实例。运行时情况经由过程 Inboundwire和Outboundwire供给组件。调用链附着于组件连接(wire)中,是以是无状态的。和记娱棒h88285以是调用链可以具有动态行径,例如新拦截器的参与和从新连接。

装载SCA装置

工件处置惩罚器用于处置惩罚contribution上的每个有效的工件。为了让contribution办事有效,工件处置惩罚器要注书自己给工件处置惩罚extension 。对付每个工件,工件处置惩罚器分两个阶段被调用。

? 读阶段:这里是你读取工件(可所以一个文档、XML元素或类等等)的地方,组装描述和记娱棒h88285工件的模型并返回它。SCA contribution办事在所有注册了工件处置惩罚器的工件上调用ArtifactProcessor.read()。要是你的模型引用了其他的模型,不必要立即装载那些模型,你只必要维持描述引用的信息,在resolve阶段,你将会把该信息转换成指向被引用模型的指针。留意:你没有需要在这个时候完全读取并装载模型,你可以在今后来完成这些事情。

? 解析阶段:这个阶段让你有时机解析对其他模型的引用。这个时候,SCA contribution中所有的描述工件的模型都已经读取,并注册了工件解析器,筹备被解析。

装载Java SCA

SCA办事装置以SCDL文件的形式被宣布到SCA域中。Tuscany运行时工件处置惩罚器将SCDL装载成一系列模型工具。这些模型工具是一系列持有元数据信息的Java bean。

有两种装载器:

StAXElementLoader:从StAX(Streaming API for XML)事故载入XML元素

ComponentTypeLoader:经由过程解析文件或自察机制来载入实现的组件类型

装载组件类型

为特定的实现载入组件类型定义:

若何做是实现规范

大概会装载XML文件(该文件由详细实现来定位)

大概自察实现工件(例如 Java评释机制)

或其他的任何要领

Loading composite componentType Loader

从供给的URL中载入SCDL

从composite包解压并载入SCDL

POJO componetType Loader

自察Java 评释

使用可插入的评释处置惩罚框架来自察Java类

运行时工件的类图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: