<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    竹十一
    在匆忙與奔走中墮落

    Fabric3簡要入門

    Fabric3的關注源于對SOA的關注。最近SCA這個概念可是很火啊,而且Fabric3的背景有BEA,(Tuscany背后是IBM),剛剛在上海結束的BEA2007發布了WebLogic Server 10.3 Tech Preview,其中SCA的實現就是基于Fabric3的。而且Fabric3現在在codehaus上,codehuas可是出品了不少精品啊,XFireMuleGroovyAspectWerkz等等,憑這點也值得關注下。

    SCA的概念就不多說了,本文關注的是如何用Fabric3開發最簡單的SCA應用,用的是Calculator的例子。Fabric3Tuscany不約而同的選了這個作為例子,不知道是歷史淵源呢還是Calculator的典型性,有趣的問題:)

    廢話不多說,先看代碼組織結構圖

    編譯必須的庫(Eclipse: properties/Java Build Path


    環境準備好了,下面開始編寫代碼。

    先看看我們要組織的SCA結構,這里為了減少本文篇幅只聲明兩個component,其余可以類似添加:

    <?xml version="1.0" encoding="UTF-8"?>
    <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" 
               xmlns:fabric3
    ="http://fabric3.org/xmlns/sca/2.0-alpha"
               name
    ="CalculatorComposite"
               autowire
    ="true">
        
    <component name="calculator">
            
    <implementation.java class="calculator.CalculatorServiceImpl"/>
        
    </component>
        
    <component name="adder">
            
    <implementation.java class="calculator.AddServiceImpl"/>
        
    </component>
    </composite>

    很簡單,只有兩個component。首先看CalculatorServiceImpl:

    public class CalculatorServiceImpl implements CalculatorService {
        
    private AddService addService;
        @Reference
        
    public void setAddService(AddService addService) {
            
    this.addService = addService;
        }
    }

    很簡單僅有一點需要說明@Referenceorg.osoa.sca.annotations.Reference,負責組裝component。注意composite配置中的autowire="true",在calculator里面并沒顯示的添加對adder的引用。另外還有兩個annotation可以關注下,@Init和@Destroy,類似Junit里的setup和teardown,在component的每個方法調用前后執行些初始、善后的工作。

    AddServiceAddServiceImpl很簡單,沒什么好說的。

    下面是CalculatorClient,讓我們來看看Fabric3的客戶端APITuscany有什么不同。

    public class CalculatorClient {
        
    public static void main(String[] args) throws Exception {
            Domain domain 
    = new Domain();
            URL url 
    = Thread.currentThread().getContextClassLoader().getResource("calculator.composite");
            domain.activate(url);
            CalculatorService calculator 
    = domain.connectTo(CalculatorService.class"calculator");
            System.out.println(
    "0.2 + 0.6 = " + calculator.add(0.20.6));
        }
    }

    怎么說呢,除了用了不同的方法簽名之外和Tuscany好像大同小異:),都是先建立domain,然后拿到component進行操作。當然建立domain進行裝配這一過程很多細節還是值得一挖的,本文限于主題和篇幅不去涉及這些主題,(關鍵是俺能力有限,挖不深:))。

    代碼準備好了,下面來運行下。

    這里需要注意的是,光上面四個jar不足以運行Fabric3的例子,還需要Development Runtime中的/boot/system兩個文件夾下的內容,層次結構如上圖所示,放在工程目錄下就行了。可以在http://fabric3.codehaus.org/Downloads下載Development Runtime,目前的版本是0.3

    然后再次編譯運行,打印出結果,運行順利通過,OK 

    本文只涉及了calculatoradder兩個component,其余三個操作各位同學可以做個練習J 還有文中提到的@Init@Destroy也可以同時嘗試下,更深入的主題還需要不斷的探索。


    備注

    Fabric3是另一個SCA的實現(http://fabric3.codehaus.org/)。寫這篇東東是為了介紹除Tuscany之外的SCA實現供大家參考,現在江湖中Tuscany很是流行,但畢竟,一枝獨秀不是春,百花齊放春滿園,拿Fabric3來比較下競爭下,不是要弄它個血雨腥風,而是為了江湖能夠更和諧。不過老實說,在組織這篇東東的過程中,確實為非技術性的因素所困擾――Fabric3在文檔方面確實非常非常缺乏。如果這點不改進的話,恐怕很難和Tuscany競爭。

    References
    http://fabric3.codehaus.org/
    http://dev2dev.bea.com/blog/editors/archive/2007/12/sca_for_weblogi.html

     

    posted on 2007-12-24 00:48 竹十一 閱讀(2515) 評論(1)  編輯  收藏 所屬分類: SOA
    Comments
    • # re: Fabric3簡要入門[未登錄]
      xmlspy
      Posted @ 2007-12-24 12:47
      什么web services,soa等等一對東西,800年前叫鬧哄哄的,不過至今都沒廣泛應用,看了代碼,其實就是和以前一樣的東西換個名稱  回復  更多評論   
     
    主站蜘蛛池模板: 含羞草国产亚洲精品岁国产精品 | 亚洲国产成人久久综合一区77| 亚洲无限乱码一二三四区| 伊人久久大香线蕉免费视频| 亚洲一级特黄大片无码毛片| 一区二区三区AV高清免费波多| 免费国产成人午夜电影| 国产青草亚洲香蕉精品久久| 免费日韩在线视频| 一级看片免费视频| 国产成人精品日本亚洲专区61| www免费插插视频| 亚洲精品无码久久一线| 人妻在线日韩免费视频| 日本久久久久亚洲中字幕| 久久国产精品2020免费m3u8 | 97性无码区免费| 一区二区亚洲精品精华液 | a高清免费毛片久久| 亚洲免费观看视频| 久久久久久国产精品免费免费男同 | 免费看国产成年无码AV片| 亚洲第一男人天堂| 四虎影院永久免费观看| 国产成人无码免费看片软件| 久久久亚洲欧洲日产国码农村| 亚洲黄色免费在线观看| 亚洲色精品三区二区一区| 亚洲精品网站在线观看不卡无广告| fc2成年免费共享视频网站| 亚洲AV永久精品爱情岛论坛| jjizz全部免费看片| 亚洲成a人片在线不卡一二三区| 亚洲精品麻豆av| 久久这里只精品国产免费10| ASS亚洲熟妇毛茸茸PICS| 五月婷婷亚洲综合| 无码人妻精品中文字幕免费| 亚洲色成人网站WWW永久四虎| 亚洲日韩在线中文字幕第一页| 午夜精品免费在线观看|