此部分描述SCA Assembly Model Specification V1.0.0—1.8 SCA Definitions与1.9 SCA扩展模型。主要表述了SCA中的definition.xml的作用以及SCA是如何通过扩展来对其它的接口、实现和绑定的支持。
1.8 SCA定义(SCA Definitions)
SCA有一些部件(artifact),它们一般是很有用的,但是它们对特殊的构件或特殊的组件不是很明确。这些共享的部件包括意图(intents)、策略集(policy sets)、绑定(bindings)、绑定类型定义(binding type definitions)和实现类型定义(implementation type definitions)。
一个SCA域里的所有的这些部件被定义在一个全局的、SCA域范围的叫definitions.xml文件里。definitions.xml文件包含了一个definitions元素,它符合下面的伪模式(pseudo-schema)片段:
<?xml version=”1.0″ encoding=”ASCII”?>
<!– Composite schema snippet –>
<definitions
targetNamespace=”xs:anyURI”>
<sca:intent/>*
<sca:policySet/>*
<sca:binding/>*
<sca:bindingType/>*
<sca:implementationType/>*
</definitions>
definitions元素有下面的属性:
targetNamespace(必需):命名空间,definitions元素的子元素被放到这个命名空间里(用于部件解析)。
definitions元素包含了可选的子元素:intent、policySet、binding、bindingtype和implementationType。此规范的其它地方或the SCA Policy Framework specification [10]都描述了这些元素。在definitions元素里被声明的这些元素的使用在the SCA Policy Framework specification [10]和the JMS Binding specification [11]里被描述。
1.9 扩展模型(Extension Model)
组装模型可以被扩展来支持新的接口类型(interface types)、实现类型(implementation types)和绑定类型(binding types)。扩展模型基于XML模式置换群(XML schema substitution groups)。在SCA命名空间中,分别为接口类型、实现类型和绑定类型定义了三种XML模式置换群的头:interface、implementation和binding。
SCA Client and Implementation specifications与SCA Bindings specifications [1]使用这些XML模式置换群去定义一些基本的接口类型、实现类型和绑定类型,但是其它类型可以像必需的一样被定义,对这些额外的支持可以从运行时(runtime)获得。这些在SCA 规范中定义的接口类型元素、实现类型元素、绑定类型元素是SCA命名空间(“http://www.osoa.ort/ encoding=”UTF-8″?>
<!– (c) Copyright SCA Collaboration 2006 –>
<schema http://www.w3.org/2001/XMLSchema”>http://www.w3.org/2001/XMLSchema”
targetNamespace=” substitutionGroup=”sca:interface”/>
<complexType name=”JavaInterface”>
<complexContent>
<extension base=”sca:Interface”>
<attribute name=”interface” type=”NCName” use=”required”/>
</extension>
</complexContent>
</complexType>
</schema>
下面的代码片段展示了一个例子,此例用来说明这些基本定义如何通过其它规范被扩展来支持一个新的不在SCA规范中定义的接口。片段展示了my-interface-extension元素和my-interface-extension-type类型。
<?xml version=”1.0″ encoding=”UTF-8″?>
<schema http://www.w3.org/2001/XMLSchema”>http://www.w3.org/2001/XMLSchema”
targetNamespace=”http://www.example.org/myextension”
>
<element name=”my-interface-extension” type=”tns:my-interface-extension-type”
substitutionGroup=”sca:interface”/>
<complexType name=”my-interface-extension-type”>
<complexContent>
<extension base=”sca:Interface”>
…
</extension>
</complexContent>
</complexType>
</schema>
1.9.2 定义Implementation Type
下面的代码片段展示了包含在sca-core.xsd里的implementation元素与Implementation类型的基本定义;完整的模式参见附录。
<?xml version=”1.0″ encoding=”UTF-8″?>
<!– (c) Copyright SCA Collaboration 2006 –>
<schema
targetNamespace=”http://www.osoa.org/
elementFormDefault=”qualified”>
…
<element name=”implementation” type=”sca:Implementation” abstract=”true”/>
<complexType name=”Implementation”/>
…
</schema>
下面的代码片段展示了这些基本定义如何被扩展来支持Java实现(implementation)。片段展示了包含在sca-implementation-java.xsd里的implementation.java元素和JavaImplementation类型的定义。
<?xml version=”1.0″ encoding=”UTF-8″?>
<schema
targetNamespace=”http://www.osoa.org/>
<element name=”implementation.java” type=”sca:JavaImplementation”
substitutionGroup=”sca:implementation”/>
<complexType name=”JavaImplementation”>
<complexContent>
<extension base=”sca:Implementation”>
<attribute name=”class” type=”NCName” use=”required”/>
</extension>
</complexContent>
</complexType>
</schema>
下面的代码片段展示了一个例子,此例用来说明这些基本定义如何被其它规范扩展来支持一个新的不在SCA规范中定义的实现类型。片段展示了my-impl-extension元素和my-impl-extension-type类型。
<?xml version=”1.0″ encoding=”UTF-8″?>
<schema
targetNamespace=”http://www.example.org/myextension”
>
<element name=”my-impl-extension” type=”tns:my-impl-extension-type”
substitutionGroup=”sca:implementation”/>
<complexType name=”my-impl-extension-type”>
<complexContent>
<extension base=”sca:Implementation”>
…
</extension>
</complexContent>
</complexType>
</schema>
除了对新的实现实例元素的定义,还需要一个相关的implementationType元素,它提供了关于新的实现类型的元数据。下面的代码片段展示了implementationType元素的伪(pseudo)模式:
<implementationType type=”xs:QName”
alwaysProvides=”list of intent xs:QName”
mayProvide=”list of intent xs:QName”/>
implementationType有下面的属性:
type(必需):implementationType元素应用于实现的类型。它应该是implementation元素的限定名(QName),比如:“sca:implementation.java”。
alwaysProvides(可选):实现类型始终提供的一个意图集。参见the Policy Framework specification [10]。
mayProvide(可选):实现类型可能提供的一个意图集,参见the Policy Framework specification [10]。
1.9.3 定义Binding Type
下面的代码片段展示了包含在sca-core.xsd里的binding元素和Binding类型的基本定义;完整模式见附录。
<?xml version=”1.0″ encoding=”UTF-8″?>
<!– binding type schema snippet –>
<!– (c) Copyright SCA Collaboration 2006, 2007 –>
<schema
targetNamespace=”http://www.osoa.org/
elementFormDefault=”qualified”>
…
<element name=”binding” type=”sca:Binding” abstract=”true”/>
<complexType name=”Binding”>
<attribute name=”uri” type=”anyURI” use=”optional”/>
<attribute name=”name” type=”NCName” use=”optional”/>
<attribute name=”requires” type=”sca:listOfQNames” use=”optional”/>
<attribute name=”policySets” type=”sca:listOfQNames” use=”optional”/>
</complexType>
…
</schema>
下面的代码片段展示了基本定义如何被扩展来支持Web service绑定。片段展示了sca-binding-webservice.xsd里的的binding.ws元素和WebServiceBinding类型的定义。
<?xml version=”1.0″ encoding=”UTF-8″?>
<schema
targetNamespace=”http://www.osoa.org/>
<element name=”binding.ws” type=”sca:WebServiceBinding”
substitutionGroup=”sca:binding”/>
<complexType name=”WebServiceBinding”>
<complexContent>
<extension base=”sca:Binding”>
<attribute name=”port” type=”anyURI” use=”required”/>
</extension>
</complexContent>
</complexType>
</schema>
下面的代码片段展示了一个例子,此例说明了基本定义是如何被其它规范扩展来支持一个新的不在SCA规范里定义的绑定。片段展示了my-binding-extension元素和my-binding-extension-type类型的定义。
<?xml version=”1.0″ encoding=”UTF-8″?>
<schema
targetNamespace=”http://www.example.org/myextension”
>
<element name=”my-binding-extension” type=”tns:my-binding-extension-type”
substitutionGroup=”sca:binding”/>
<complexType name=”my-binding-extension-type”>
<complexContent>
<extension base=”sca:Binding”>
…
</extension>
</complexContent>
</complexType>
</schema>
除了对新的绑定实例元素的定义,还需要一个相关的bindingType元素,它提供了关于新的绑定类型的元数据。下面的代码片段展示了bindingType元素的伪(pseudo)模式:
<bindingType type=”xs:QName”
alwaysProvides=”list of intent QNames”?
mayProvide = “list of intent QNames”?/>
bindingType有下面的属性:
type(必需):bindingType元素应用于绑定的类型。它规定为binding元素的限定名(QName),比如:“sca:binding.ws”。
alwaysProvides(可选):绑定类型始终提供的一个意图集。参见the Policy Framework specification [10]。
mayProvide(可选):绑定类型可能提供的一个意图集,参见the Policy Framework specification [10]。
此部分结束,还有最后一节1.10 打包与发布,敬请关注。。。。。。。。
原文出处:http://gocom.primeton.com/blog9683_35328.htm
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
如何透过业务和技术看SOA的发展
随着SOA发展的深入,各种SOA相关技术标准也随之发展和完善。面对庞大而复杂的SOA相关技术标准,我们如何来有选择的使用它们呢?
-
SOA架构下补偿模型驱动的安全苛求软件开发
随着我国高速铁路的快速发展,传统的计算机联锁软件开发方法在灵活性、可维护性、安全性以及开发效率上都显露出不足,怎样才能弥补这一不足呢?
-
浅谈基于SOA架构的服务集成技术研究
在近几年软件行业的发展中,面向服务架构(SOA)成为了当下的热门话题。那么对于SOA架构的服务集成你又了解多少?
-
揭秘WebSphere Process Server中SCA组件的事务实现机制
SCA作为一种新的编程模型,自然也需要提供完整的事务支持。所幸的是WPS本身是基于WebSphere Application Server的,所以底层天然就具有了强大的事务处理能力。