Tuscnay SCA源码分析报告

Tuscnay SCA源码分析报告

ID:41122140

大小:724.00 KB

页数:7页

时间:2019-08-16

Tuscnay SCA源码分析报告_第1页
Tuscnay SCA源码分析报告_第2页
Tuscnay SCA源码分析报告_第3页
Tuscnay SCA源码分析报告_第4页
Tuscnay SCA源码分析报告_第5页
资源描述:

《Tuscnay SCA源码分析报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、TuscnaySCA源码分析报告1.整体架构SCAJava运行时由core和extension组成。Core本质上来说是一个多VM的wiring引擎。该引擎使用IOC(控制反转)和DI(依赖注入)原则来连接组件。CoreCore在性能方面是简单而有限的。它将功能单元连接在一起,并提供可以和extension交互的SPI机制。例如象服务发现,可靠性,对传输协议的支持等特性都是通过extension来做的。ExtensionExtension增强SCA运行时的功能。Extesion类型不是固定的。而core则是通过提供对ex

2、tension模块开放支持来使得设计尽量灵活。Ø组件实现类型,例如:Spring,Groovy和JavascriptØ绑定类型,比如:Axis,CXF,AMQP,ActiveMQ,JXTAØ数据绑定类型,比如:JAXB,SDO,XmlBeanØ接口绑定类型,比如:WSDL,Java运行时Core是设计得可以嵌入于许多不同的主机环境下的。例如,core也许用于OSGI容器、单独的运行时环境、serlvet引擎或J2EE应用服务器中。运行时的性能根据主机环境不同而不同。JavaSCA运行时的高层概述:下图是由关键的模块/包组

3、成的SCA运行时高层视图1.SCASpecAPI:由SCAJavaClientandImplementation定义的API2.API:扩展了SCASpecAPI的TuscanyAPI3.Core:运行时实现和SPI扩展机制4.Extension:a)Componentimplementation–扩展语言支持:例如BPEL,Python,C++,Ruby等b)Binding–扩展协议支持:例如Axis2,CXF等c)InterfaceBinding–扩展服务定义类型:比如SWDL,Java等d)Databinding–

4、扩展数据支持:比如SDO,JAXB等5.Hostplatforms:Tuscany运行时的主机环境  1.引导及装配过程分析主要分成三个步骤:  1.载入(load)阶段从SCDL读取配置信息处理后,生成内存中的模型。2.创建(build)阶段评估模型并将模型组成单独的组件元素,如Service,Reference,Component。3.连接(connect)阶段连接Reference到相应的Service。装配过程由部署发起,按照顺序逐步执行,三个步骤包含在部署当中,由部署发起。    1.1Loader通过Load

5、er接口实现。  有两种类型的loader:ComponentTypeLoader和StAXElementTypeLoader,通过Loader接口来实现对两中类型的loaer进行载入。  1、ComponentTypeLoader类型loader负责载入和运行环境相关的信息,即系统环境的实现  2、StAXElementLoader类型loader负责载入在系统环境运行的应用相关的信息  1.2Builder  从配置的元模型中进行组装,形成运行期的组件模型。包括关联implementation及binding。   

6、 1.3Connector  根据元模型配置,对Wire进行关联。  2.Component实例的创建    环境的引导  SCA是在主机环境下引导,默认的引导过程是在DefaultBootstrapper中实现的,过程如下:     1.服务调用过程分析TuscanySCA的服务调用过程主要采用了动态代理模式(DynamicProxy)及方法调用(Invocation)。Java动态代理基础知识Java动态代理类位于Java.lang.reflect包下,一般主要涉及到以下两个类:InvocationHandler和P

7、roxy。InvocationHandler必须被实现,实现这个接口的invoke(Objectobj,Methodmethod,Object[]args),第一个参数obj一般是指代理类,method是被代理的方法,args为该方法的参数数组。这个invoke方法的内容主要是在调用被代理的方法前后方便地加上你自己的逻辑,如下例子publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{ System.out.println(“调用前

8、你要插入的逻辑,如验证权限”); //实际调用被代理类的方法 Objectresult=method.invoke(this.target,args);System.out.println(“调用后你要插入的逻辑,如调整系统状态”);returnresult;}Proxy:该类即为动态代理类,是Jdk实现的类,无须实

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。