SCA Assembly Model Specification V1.0.0 中文翻译(八),接近尾声……

日期: 2008-05-28 作者:liang_ma 来源:TechTarget中国

  此部分描述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

官方微博

TechTarget中国官方微博二维码

TechTarget中国

作者

liang_ma
liang_ma

相关推荐