SCA中组件类型、元素类型及其模型对象(ModelObject)的关系

本文介绍SCA系统中的两种组件类型:Component与Composite,及其对应的组件类型装载器。ComponentTypeLoader负责装载.componentType文件,描述组件实现;CompositeTypeLoader解析scdl文件,生成模型对象。文章还概述了典型.componentType与scdl文件示例。

一、组件类型

SCA中有两种组件类型,即Component 组件类型(Component Type)和Composite组件类型(Composite Type),对应这两种组件类型,在模型对象中有两个组件类型的装载器:SystemComponentTypeLoader和SystemCompositeTypeLoader(请注意它们是组件类型装载器,而不是组件装载器)。

1、Component 类型装载器(Component Type Loader) 用来装载以.componentType为扩展名的文件。以.componentType为扩展名的文件描述了一个组件的实现是由哪些内容配置而成的。ComponentType包含了当前组件提供的服务、通过连线连接到外部的服务的组件引用以及组件可以被设置的属性等内容。

2、组件和实现的关系通过Component Type表现出来,如图:

3、一个典型的.componentType文件如下:

<?xmlversion="1.0"encoding="ASCII"?>
<componentTypexmlns="http://www.osoa.org/xmlns/sca/1.0"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<servicename="HelloWorldService">
<interface.javainterface="helloworld.HelloWorldService"/>
</service>
<referencename="extService">
<interface.javainterface="helloworld.HelloWorldService"/>
</reference>
</componentType>

4、Composite类型装载器(Composite Type Loader) 是用来装载scdl文件。scdl是一个基于XML的服务组件描述文件。在scdl中包含许多sca定义的组件元素。Composite类型装载器解析scdl文件所描述的元素关系和属性,并生成对应的元素模型对象。

5、一个典型的scdl文件如下:

<?xmlversion="1.0"encoding="UTF-8"?>
<compositexmlns="http://www.osoa.org/xmlns/sca/1.0"xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance"
name
="calculatorws">

<dbsdo:import.sdoxmlns:dbsdo="http://incubator.apache.org/tuscany/xmlns/databinding/sdo/1.0-incubator-M2"location="wsdl/calculator.wsdl"/>

<servicename="CalculatorWebService">
<interface.wsdlinterface="http://calculator#wsdl.interface(Calculator)"wsdli:wsdlLocation="http://calculatorwsdl/calculator.wsdl"/>
<binding.wsendpoint="http://calculator#wsdl.endpoint(CalculatorService/CalculatorServiceSOAP11port)"location="wsdl/calculator.wsdl"/>
<reference>CalculatorServiceComponent</reference>
</service>

<componentname="CalculatorServiceComponent">
<implementation.javaclass="calculator.CalculatorServiceImpl"/>
<referencename="addService">AddServiceComponent</reference>
<referencename="subtractService">SubtractServiceComponent</reference>
<referencename="multiplyService">MultiplyServiceComponent</reference>
<referencename="divideService">DivideServiceComponent</reference>
<referencename="mathService">MathServiceComponent</reference>
</component>

<componentname="AddServiceComponent">
<implementation.javaclass="calculator.AddServiceImpl"/>
</component>

<componentname="SubtractServiceComponent">
<implementation.javaclass="calculator.SubtractServiceImpl"/>
</component>

<componentname="MultiplyServiceComponent">
<implementation.javaclass="calculator.MultiplyServiceImpl"/>
</component>

<componentname="DivideServiceComponent">
<implementation.javaclass="calculator.DivideServiceImpl"/>
</component>

<componentname="MathServiceComponent">
<implementation.javaclass="calculator.MathServiceImpl"/>
</component>
</composite>

二、元素类型

SCA定义了很多的元素,这些元素在装配文件和组件定义文件中被详细的描述。在SCA启动过程中的载入(load)阶段,各个元素的描述被转化为相应模型对象。元素类型会在下面的图中给出。

三、模型对象(ModelObject)

模型对象ModelObject是一个接口,用来表现SCA系统中定义的任何一个组件类型和SCA元素在内存中的模型对象。

载入过程(load)或者称为载入阶段所做的就是将scdl以及.componentType文件中描述的元素转换为对应的模型对象,完成文件描述到内存中模型对象的建立。

四、模型对象继承关系图: 这个图有些大了,如果看不清需要单独打开一个窗口并放大 :)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值