關(guān) 注 開 源 (王鋒的Blog)

          Spring Hibernate Jboss Tomcat SCA OSGI

          Tuscany SCA擴(kuò)展機(jī)制研究(1)


          Tuscany作為Apache的孵化項目,提供了對SOA的支持,包含的模塊有SCASDO,DAS三大塊,本節(jié)僅對其SCA實現(xiàn)進(jìn)行一些探討。SCA實現(xiàn)的目前的版本為0.91,是在Tuscany1.0M2的基礎(chǔ)上演化而來的,對于SCA規(guī)范的支持也由0.96 Spec發(fā)展到了1.0Spec。其項目也是相當(dāng)活躍的,從其Mail List中可見一斑。而對于其分化版本fabric3,顯得相對冷清一些。

          Tuscany作為Apache的孵化項目,提供了對SOA的支持,包含的模塊有SCASDO,DAS三大塊,本節(jié)僅對其SCA實現(xiàn)進(jìn)行一些探討。SCA實現(xiàn)的目前的版本為0.91,是在Tuscany1.0M2的基礎(chǔ)上演化而來的,對于SCA規(guī)范的支持也由0.96 Spec發(fā)展到了1.0Spec。其項目也是相當(dāng)活躍的,從其Mail List中可見一斑。而對于其分化版本fabric3,顯得相對冷清一些。

          Tuscany0.91相對于1.0M2,在結(jié)構(gòu)上做了較大的調(diào)整,在功能處理上更加模塊化了,其擴(kuò)展也相對容易一些,僅需要實現(xiàn)較少的接口,就能達(dá)到目的,下圖為Tuscany的運(yùn)行期結(jié)構(gòu)圖:

           
           

          SCA擴(kuò)展機(jī)制包含了4個方面的擴(kuò)展,有implementaion擴(kuò)展,binding擴(kuò)展,interface擴(kuò)展,databinding擴(kuò)展,下面就對其擴(kuò)展機(jī)制分別作一下分析。

          1、 Implementaion擴(kuò)展

          Implementation作為component的實現(xiàn)而存在,是作為component服務(wù)的提供者,component服務(wù)調(diào)用時,調(diào)用的就是implementaion提供的功能。Tuscany目前已實現(xiàn)的implementaion類型有java,script,spring,bpel,這些類型已能基本滿足客戶的需要,但有些情況還是需要用戶自己定義一些特殊的實現(xiàn)。其擴(kuò)展步驟如下:

          a.       定義組裝模型擴(kuò)展(Implementation接口)

          b.       定義接口及實現(xiàn)組裝模型擴(kuò)展

          c.       定義實現(xiàn)的解析器(擴(kuò)展StAXArtifactProcessor中的read,write,resolve方法)

          d.       定義實現(xiàn)的提供者(擴(kuò)展ImplementationProvider接口,生成調(diào)用Invoker)

          e.       注冊解析器及提供者(擴(kuò)展ModuleActivator)


          f.      發(fā)布ModuleActivator到系統(tǒng)中(在文件META-INF/loaders/com.primeton.sca.runtime.IModelLoader文件中注冊)

           

          擴(kuò)展CRUD示例:

          a.       在composite文件中定義component實現(xiàn)

           

          <component name=“CRUDComponent”>

                   
          <crud:implementation.crud directory=“/tmp” >

          </component>

          對應(yīng)的schema為: 

          <element name="implementation.crud" type="sca:CRUDImplementation" 
                  substitutionGroup
          ="sca:implementation" />
              
          <complexType name="CRUDImplementation">
                  
          <complexContent>
                      
          <extension base="sca:Implementation">
                          
          <attribute name="directory" type="string" use="optional" />
                      
          </extension>
                  
          </complexContent>
          </complexType>


          b.       接口定義

          a)         CRUDImplementation interface 擴(kuò)展 org.apache.tuscany.sca.assembly.Implementation

          b)        CRUDImplementationFactory interface 定義 createImplementation() 方法

          c)        定義實現(xiàn)接口CRUDImplementation

          d)        定義實現(xiàn)工廠類CRUDImplementationFactory

          c.       實現(xiàn)解析器StAXArtifactProcessor,對定義的implementation.crud directory=“/tmp”進(jìn)行解析

          d.       實現(xiàn)調(diào)用提供者ImplementationProvider,生成Invoker,通過方法createCallbackInvoker,createInvoker來完成

          e.       在ModuleActivator中注冊,在其start方法中注冊,stop方法中銷毀

          f.        系統(tǒng)注冊(在com.primeton.sca.runtime.IModelLoade文件中注冊ModuleActivator)

          其實現(xiàn)的類圖如下:




          (待續(xù))



          posted on 2007-08-05 10:53 wangfeng 閱讀(697) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 台北市| 磴口县| 金沙县| 赞皇县| 龙海市| 东城区| 泸定县| 辽阳市| 四川省| 青河县| 抚松县| 盐津县| 广德县| 颍上县| 额尔古纳市| 泾阳县| 富源县| 兴文县| 兴山县| 东兰县| 青阳县| 斗六市| 罗甸县| 尤溪县| 同江市| 徐闻县| 通州市| 正安县| 淮南市| 甘肃省| 宿松县| 宁南县| 新巴尔虎左旗| 林芝县| 高尔夫| 景德镇市| 镇坪县| 永泰县| 蛟河市| 潜山县| 滨海县|