一、组件类型
SCA中有两种组件类型,即Component 组件类型(Component Type)和Composite组件类型(Composite
Type),对应这两种组件类型,在模型对象中有两个组件类型的装载器:SystemComponentTypeLoader和SystemCompositeTypeLoader(请注意它们是组件类型装载器,而不是组件装载器)
。
1、Component 类型装载器(Component Type Loader) 用来装载以.componentType为扩展名的文件。以.componentType为扩展名的文件描述了一个组件的实现是由哪些内容配置而成的。ComponentType包含了当前组件提供的服务、通过连线连接到外部的服务的组件引用以及组件可以被设置的属性等内容。
2、组件和实现的关系通过Component Type表现出来,如图:
3、一个典型的.componentType文件如下:
<?xml version="1.0" encoding="ASCII"?>
<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:
xsd="http://www.w3.org/2001/XMLSchema">
<service name="HelloWorldService">
<interface.java interface="helloworld.HelloWorldService"/>
</service>
<reference name="extService">
<interface.java interface="helloworld.HelloWorldService"/>
</reference>
</componentType>
|
4、Composite类型装载器(Composite Type Loader) 是用来装载scdl文件。scdl是一个基于XML的服务组件描述文件。在scdl中包含许多sca定义的组件元素。Composite类型装载器解析scdl文件所描述的元素关系和属性,并生成对应的元素模型对象。
5、一个典型的scdl文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance"
name="calculatorws">
<dbsdo:import.sdo xmlns:dbsdo="http://incubator.apache.org/tuscany/xmlns/databinding/sdo/1.0-incubator-M2" location="wsdl/calculator.wsdl" />
<service name="CalculatorWebService">
<interface.wsdl interface="http://calculator#wsdl.interface(Calculator)"
wsdli:wsdlLocation="http://calculator wsdl/calculator.wsdl" />
<binding.ws endpoint="http://calculator#wsdl.endpoint(CalculatorService/CalculatorServiceSOAP11port)"
location="wsdl/calculator.wsdl" />
<reference>CalculatorServiceComponent</reference>
</service>
<component name="CalculatorServiceComponent">
<implementation.java class="calculator.CalculatorServiceImpl"/>
<reference name="addService">AddServiceComponent</reference>
<reference name="subtractService">SubtractServiceComponent</reference>
<reference name="multiplyService">MultiplyServiceComponent</reference>
<reference name="divideService">DivideServiceComponent</reference>
<reference name="mathService">MathServiceComponent</reference>
</component>
<component name="AddServiceComponent">
<implementation.java class="calculator.AddServiceImpl"/>
</component>
<component name="SubtractServiceComponent">
<implementation.java class="calculator.SubtractServiceImpl"/>
</component>
<component name="MultiplyServiceComponent">
<implementation.java class="calculator.MultiplyServiceImpl"/>
</component>
<component name="DivideServiceComponent">
<implementation.java class="calculator.DivideServiceImpl"/>
</component>
<component name="MathServiceComponent">
<implementation.java class="calculator.MathServiceImpl"/>
</component>
</composite>
|
二、元素类型
SCA定义了很多的元素,这些元素在装配文件和组件定义文件中被详细的描述。在SCA启动过程中的载入(load)阶段,各个元素的描述被转化为相应模型对象。元素类型会在下面的图中给出。
三、模型对象(ModelObject)
模型对象ModelObject是一个接口,用来表现SCA系统中定义的任何一个组件类型和SCA元素在内存中的模型对象。
载入过程(load)或者称为载入阶段所做的就是将scdl以及.componentType文件中描述的元素转换为对应的模型对象,完成文件描述到内存中模型对象的建立。
四、模型对象继承关系图: 这个图有些大了,如果看不清需要单独打开一个窗口并放大
:)
|