您所在位置: 网站首页 / Tuscnay SCA源码分析报告.doc / 文档详情
Tuscnay SCA源码分析报告.doc 立即下载
2024-09-12
约4.5千字
约7页
0
724KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

Tuscnay SCA源码分析报告.doc

TuscnaySCA源码分析报告.doc

预览

免费试读已结束,剩余 2 页请下载文档后查看

15 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

TuscnaySCA源码分析报告
整体架构
HYPERLINK"http://search.yesky.com/search.do?stype=0&wd=SCA"\t"_blank"\o"sca"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
运行时
Core是设计得可以嵌入于许多不同的主机环境下的。例如,core也许用于OSGI容器、单独的运行时环境、serlvet引擎或J2EE应用服务器中。运行时的性能根据主机环境不同而不同。
JavaSCA运行时的高层概述:
下图是由关键的模块/包组成的SCA运行时高层视图

SCASpecAPI:由SCAJavaClientandImplementation定义的API
API:扩展了SCASpecAPI的TuscanyAPI
Core:运行时实现和SPI扩展机制
Extension:
Componentimplementation–扩展语言支持:例如BPEL,Python,C++,Ruby等
Binding–扩展协议支持:例如Axis2,CXF等
InterfaceBinding–扩展服务定义类型:比如SWDL,Java等
Databinding–扩展数据支持:比如SDO,JAXB等
Hostplatforms:Tuscany运行时的主机环境

引导及装配过程分析
主要分成三个步骤:

载入(load)阶段从SCDL读取配置信息处理后,生成内存中的模型。
创建(build)阶段评估模型并将模型组成单独的组件元素,如Service,Reference,Component。
连接(connect)阶段连接Reference到相应的Service。
装配过程由部署发起,按照顺序逐步执行,三个步骤包含在部署当中,由部署发起。

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

1.3Connector
根据元模型配置,对Wire进行关联。
2.Component实例的创建



环境的引导
SCA是在主机环境下引导,默认的引导过程是在DefaultBootstrapper中实现的,过程如下:




服务调用过程分析
TuscanySCA的服务调用过程主要采用了动态代理模式(DynamicProxy)及方法调用(Invocation)。
Java动态代理基础知识
Java动态代理类位于Java.lang.reflect包下,一般主要涉及到以下两个类:InvocationHandler和Proxy。
InvocationHandler必须被实现,实现这个接口的invoke(Objectobj,Methodmethod,Object[]args),第一个参数obj一般是指代理类,method是被代理的方法,args为该方法的参数数组。这个invoke方法的内容主要是在调用被代理的方法前后方便地加上你自己的逻辑,如下例子
publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{
System.out.println(“调用前你要插入的逻辑,如验证权限”);
//实际调用被代理类的方法
Objectresult=method.invoke(this.target,args);
System.out.print
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

Tuscnay SCA源码分析报告

文档大小:724KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用