




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 概述SCA Java运行时由core和extension组成。Core本质上来说是一个多VM的wiring引擎。该引擎使用IOC(控制反转)和DI(依赖注入)原则来连接组件。2 CoreCore在性能方面是简单而有限的。它将功能单元连接在一起,并提供可以和extension交互的SPI机制。例如象服务发现,可靠性,对传输协议的支持等特性都是通过extension来做的。3 ExtensionExtension增强SCA运行时的功能。Extesion类型不是固定的。而core则是通过提供对extension模块开放支持来使得设计尽量灵活。l 组件实现类型,例如:Spring, Groovy 和Javascriptl 绑定类型,比如:Axis, CXF ,AMQP ,ActiveMQ, JXTAl 数据绑定类型,比如:JAXB, SDO ,XmlBeanl 接口绑定类型,比如:WSDL, Java关于如何实现一个extension的详细信息可以在Extensions Guide中查看。4 运行时Core是设计得可以嵌入于许多不同的主机环境下的。例如core也许用于OSGI容器、单独的运行时环境、serlvet引擎或J2EE应用服务器中。运行时的性能根据主机环境不同而不同。Java SCA运行时的高层概述:下图是由关键的模块/包组成的SCA运行时高层视图1. SCA Spec API:由SCA Java Client and Implementation定义的API2. API:扩展了SCA Spec API的Tuscany API3. Core:运行时实现和SPI扩展机制4. Extension:1) Component(英文原版有错误) implementation 扩展语言支持:例如 BPEL,Python,C+,Ruby等2) Binding 扩展协议支持:例如 Axis2, CXF等3) Interface Binding 扩展服务定义类型:比如WSDL, Java等4) Databinding 扩展数据支持:比如SDO, JAXB等5) Host platforms:Tuscany运行时的主机环境5 内部高层视图参考下图:6 引导过程引导过程是由主机环境控制的。默认的实现是DefaultBootstrapper。运行时由某个成型的SCA Assembly XML文件序列化而来并处理服务装配。装载阶段处理SCDL并创建一个内存模型处理相应的运行时工件(例如组件componet,服务service,引用reference)连接阶段将对服务的引用连接起来7 装配模型SCA装配模型在Tuscany中是用一系列接口表示的。如下是些关键的元素。SCA component 是配置化的SCA实现的实例,它可以提供服务或消费服务。SCA service用于声明实现的可以被外部访问的服务SCA reference用于表示该实现对某些其他实现所提供的服务的依赖。该依赖的服务可以通过配置来指定。Implementation是用于描述软件技术的概念,例如在面向服务的应用中实现了一个或多个服务的Java 类,BEPL,XSLT转换,C+类。SCA composite也是implementaion。ComponentType涉及实现的可配置的方面。Interface定义了一个或多个业务功能。这些业务功能通过Service提供,通过Reference让其他组件使用。服务是由实现的接口来定义的。现在SCA支持两种接口类型系统:Java接口、WSDL portTypeSCA composite是SCA域中的compositon的基础单元。SCA Composite是组件的装配,服务、应用和wire都互相连接。SCA wire将服务引用连接到服务上。Binding是被服务和引用所使用的。引用使用绑定来描述访问机制,该机制用于访问连接的服务。服务使用绑定来描述客户程序调用服务的访问机制。Property是考虑到有的实现配置需要显式地设置数据值。该数据值由组件提供,当然也可能来源于容器composite的属性。8 ContributionTuscany运行时提供了一个框架来支持SCA的contribution。框架可以通过下列的两个扩展点来扩展:PackageProcessorExtensionPoint:它用于处理不同的包装格式或归档的扩展,可以是目录、Jar、OSGI bundle、EAR、War或Zip。ArtifactProcessorExtensionPoint:它用于处理特定工件类型的扩展,可以是SWDL,XSD,composite,java类后BEPL。包处理器会扫描安装了的contribution,并产生需要处理的工件列表。当前有支持文件夹/文件系统和 Jar contribution包。为了让contribution服务有效,包处理器要注册自己给包处理extension 。工件处理器用于处理contribution上的每个有效的工件。为了让contribution服务有效,工件处理器要注册自己给工件处理extension 。对于每个工件,工件处理器分两个阶段被调用。读阶段:这里是你读取工件(可以是一个文档、XML元素或类等等)的地方,组装描述工件的模型并返回它。SCA contribution服务在所有注册了工件处理器的工件上调用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻装载那些模型,你只需要保持描述引用的信息,在resolve阶段,你将会把该信息转换成指向被引用模型的指针。注意:你没有必要在这个时刻完全读取并装载模型,你可以在以后来完成这些工作。解析阶段:这个阶段让你有机会解析对其他模型的引用。这个时刻,SCA contribution中所有的描述工件的模型都已经读取,并注册了工件解析器,准备被解析。所有可部署的composite应该在现在准备部署到SCA域中。包处理器会扫描安装了的contribution,并产生需要处理的工件列表。当前有支持文件夹/文件系统和Jar contribution包。为了让contribution服务有效,包处理器要注册自己给包处理extension 。工件处理器用于处理contribution上的每个有效的工件。为了让contribution服务有效,工件处理器要注册自己给工件处理extension 。对于每个工件,工件处理器分两个阶段被调用。 读阶段:这里是你读取工件(可以是一个文档、XML元素或类等等)的地方,组装描述工件的模型并返回它。SCAcontribution服务在所有注册了工件处理器的工件上调用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻装载那些模型,你只需要保持描述引用的信息,在resolve阶段,你将会把该信息转换成指向被引用模型的指针。注意:你没有必要在这个时刻完全读取并装载模型,你可以在以后来完成这些工作。 解析阶段:这个阶段让你有机会解析对其他模型的引用。这个时刻,SCA contribution中所有的描述工件的模型都已经读取,并注册了工件解析器,准备被解析。所有可部署的composite应该在现在准备部署到SCA域中。9 实现扩展实现扩展负责实现类型的支持,例如Java,Script和BEPL10 绑定扩展绑定扩展负责对绑定类型进行支持,例如web service,JMS,JSON-RPC和RMI11 接口扩展接口扩展负责接口类型的扩展,例如Java接口和WSDL 1.1 portType12 数据绑定扩展请看我翻译的Tuscany数据绑定指南13 Composite 激化在composite完整地配置后,就能在SCA域中激活它。Tuscany运行时用以下步骤激化composite:1、 构建composite:这个阶段,composite模型更进一步地正规化来方便运行时的交互。元数据在service/reference提升后统一化了。根据这个扁平模型,我们可以获取所有的组件级信息。2、 配置composite:这个阶段,composite层次结构用于导航组件实现的配置信息。引用绑定和服务通过提供者工厂来创建运行时组件以及外部服务之间的连接。3、创建运行时连接(wire):这个阶段,为组件引用和组件服务以选定的绑定形式创建运行时连接。运行时连接是一个调用链的集合。这些调用链按照操作来分成区。每个调用链都由一系列的调用器和拦截器构成。调用器提供到绑定协议和实现技术的逻辑调用。拦截器是特定类型的调用器,为调用它提供了附加的功能,比如数据传输和事务控制。对于一个组件引用,我们创建运行时连接(wire)来描述以选定绑定的形式对外的调用。对于组件服务,我们创建运行时连接 (wire)来描述对实现的对内调用。回调连接(callback wire)能附加到组件服务上来描述来自服务的一个回调调用。4、启动composite:这个阶段,由ImplementationProvider、ReferenceBindingProvider和 ServiceBindingProvider定义的start()回调方法会被调用。最终,组件,组件引用和组件服务被初始化而服务于组件的交互。服务监听器会启动,从而接受来自绑定层(binding layer)的入内请求。14 调用概述调用会被分发到WireInvocationHandlerWireInvocationHandler查找正确的InvocationChain然后创建一个消息,设置有效负载,设置TargetInvoker,并传递消息给下层链当消息到达链的末端,TargetInvoker会被调用,现在轮到TargetInvoker负责叫调用分发到目标存储在outbound边界上的TargetInvoker当连接源的作用域值等于或小于目标的作用域值时,允许缓存目标实例。运行时环境通过 Inboundwire和Outboundwire提供组件。调用链附着于组件连接(wire)中,因此是无状态的。所以调用链可以具有动态行为,例如新拦截器的介入和重新连接。15 装载SCA装配工件处理器用于处理contribution上的每个有效的工件。为了让contribution服务有效,工件处理器要注册自己给工件处理extension 。对于每个工件,工件处理器分两个阶段被调用。 读阶段:这里是你读取工件(可以是一个文档、XML元素或类等等)的地方,组装描述工件的模型并返回它。SCAcontribution服务在所有注册了工件处理器的工件上调用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻装载那些模型,你只需要保持描述引用的信息,在resolve阶段,你将会把该信息转换成指向被引用模型的指针。注意:你没有必要在这个时刻完全读取并装载模型,你可以在以后来完成这些工作。 解析阶段:这个阶段让你有机会解析对其他模型的引用。这个时刻,SCA contribution中所有的描述工件的模型都已经读取,并注册了工件解析器,准备被解析。16 装载Java SCASCA服务装配以SCDL文件的形式被发布到SCA域中。Tuscany运行时工件处理器将SCDL装载成一系列模型对象。这些模型对象是一系列持有元数据信息的Java bean。有两种装载器:StAXElementLoader:从StAX(Streaming API for XML)事件载入XML元素Co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年淄博临淄区卫生健康系统事业单位招聘高层次专业技术人员初试考试参考试题及答案解析
- 2025年产科母婴护理技巧与意外处理模拟考试卷答案及解析
- 2025年放射科医师影像学报告书写规范测试卷答案及解析
- 2025重庆市红光中学招聘教师11人考试参考试题及答案解析
- 2025重庆市永川区教育委员会招聘公益性岗位人员1人考试参考试题及答案解析
- 2025新疆和田地区第二批教师招聘81人备考练习试题及答案解析
- 2025文山州富宁县事业单位公开考调工作人员(23人)考试参考试题及答案解析
- 2025年金华市医疗保障中心招聘编外用工人员3人备考练习题库及答案解析
- 加工居间合同4篇
- 编写常用民商事合同范本3篇
- 泰戈尔简介课件
- 2025年继电保护实操考试题带答案
- (2025)国库知识竞赛题库及答案
- (2025年标准)产假提前上班协议书
- 医院价格委员会管理制度及实施
- 2025年重庆市面向社会公开选拔社区专职工作者后备库人选考试(综合知识)历年参考题库含答案详解(5套)
- 《全球哮喘管理和预防策略(GINA 2025)》解读
- 2025年广东省中考语文试卷(含答案解析)
- (高清版)T∕CES 243-2023 《构网型储能系统并网技术规范》
- 山东淄博小升初数学真题试卷
- 网约车公司风险管理制度
评论
0/150
提交评论