基于Spring-DM實現分布式服務框架(DSF)(二)

          在上篇分析完了在V 0.7需要干的活后,開始細化其中的實現細節,由于技術細節和之前想的有點不同,在細化的同時也稍做了調整,系統的架構仍然保持不變,在這篇blog中來看看實現每項任務的技術細節,之后就可以進入編碼實現階段了。
          1、服務模型
                采用OSGi的服務模型,在Spring中使用此服務模型時和Spring-DM中的osgi:service、osgi:reference基本一致,示例如下:
                發布服務(將bulletinListAction以jndi的方式發布為dsf服務): 

          <dsf:service id="BulletinListCommandService" version="1.0" ref="bulletinListAction" 
            interface
          ="cn.org.osgi.xwork.action.IAction">
             
          <dsf:service-properties>
              
          <prop key="command">LIST</prop>
             
          </dsf:service-properties>
                
          <!--以jndi的方式對外發布--> 
                
          <dsf:jndi/>
            
          </dsf:service>

               引用服務(引用dsf服務):

          <dsf:reference id="extensionRegistry" interface="org.eclipse.core.runtime.IExtensionRegistry" version="[1.0,2,0)" cardinality="1..x" retries="3" timeout="5000">
                  
          <dsf:service-properties>
                   
          <prop key="command">LIST</prop>
                 
          </dsf:service-properties>
                     <!--以jndi的方式調用遠程服務-->
                     <dsf:jndi/>
               
          </dsf:reference>

              關于服務模型所支持的所有spring的配置在之后我會公布相應的xsd文件。
          2、服務中心
                在查詢了memcachedb的相關資料后,感覺目前它的java接口好像還不太好用,決定直接采用memcached,自己來實現存儲,由于服務模型信息的數據其實非常的小,而且維護改動的頻率并不是那么的高,暫時采用文件方式直接存儲,服務中心在注冊時將文件存儲在共享的空間中,之后將文件解析為服務模型對象,放入memcached,當有更新、刪除動作時同樣做相應的處理,文件存儲以及memcached交互都是比較容易的事,將文件解析為服務模型對象采用xstream完成。
                服務中心基于Spring-DM、Webwork-OSGi簡單實現。  
          3、發布服務
                使用方法已經在上面示例了,具體實現步驟則為:
                提供擴展的spring xml namespace的支持;
                編寫DSFJNDIExporter class,基于Spring的JNDITemplate實現將spring bean注冊到JNDI的過程(要求為在本地啟動jndi server,默認采用jboss jnp)。

          4、調用服務
                這個部分之前分析錯誤,之前忽略了服務應用端是不知道目標服務的地址的,需要通過分布式緩存查詢才可得知,因此不是直接采用Spring的JNDIObjectFactoryBean就可以實現的,需要編寫自己的DSFObjectFactoryBean,具體實現步驟為:
                提供擴展的spring xml namespace的支持;
                編寫DSFObjectFactoryBean class,由這個bean來負責調用分布式緩存,查詢目標服務地址,由于目前只有JNDI方式,在獲取到目標服務地址后仍然通過Spring的JNDIObjectFactoryBean完成剩余工作。
          經過上面四步技術實現細節的分析,可以來編碼完成V 0.7的實現了。

          posted on 2008-01-29 23:12 BlueDavy 閱讀(5181) 評論(0)  編輯  收藏 所屬分類: OSGi、SOA、SCA

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導航

          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          統計

          隨筆分類

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 沂源县| 临猗县| 宁乡县| 岳池县| 海林市| 甘洛县| 伊春市| 夏津县| 台州市| 辽阳市| 吕梁市| 龙井市| 马鞍山市| 枣阳市| 永修县| 武宁县| 吕梁市| 舟曲县| 唐河县| 隆化县| 惠州市| 乌海市| 鄄城县| 巴青县| 喀喇沁旗| 类乌齐县| 永修县| 玉溪市| 富蕴县| 莫力| 滦平县| 慈溪市| 东港市| 茌平县| 富阳市| 原平市| 黄陵县| 合川市| 丘北县| 安义县| 富阳市|