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

          Spring Hibernate Jboss Tomcat SCA OSGI

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


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

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

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

           
           

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

          1、 Implementaion擴(kuò)展

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

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

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

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

          d.       定義實(shí)現(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實(shí)現(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)        定義實(shí)現(xiàn)接口CRUDImplementation

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

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

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

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

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

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




          (待續(xù))



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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 多伦县| 株洲县| 辰溪县| 铜陵市| 布拖县| 涪陵区| 临邑县| 迁西县| 信丰县| 刚察县| 福清市| 绿春县| 娱乐| 临江市| 玉山县| 玉溪市| 桂林市| 宣武区| 甘谷县| 泸水县| 阳东县| 东阿县| 阿鲁科尔沁旗| 水富县| 荣成市| 枞阳县| 博客| 深圳市| 青阳县| 泽普县| 青川县| 漳州市| SHOW| 红安县| 朝阳市| 福清市| 贞丰县| 温泉县| 河曲县| 吉林省| 彭泽县|