gembin

          OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

          HBase, Hadoop, ZooKeeper, Cassandra

          Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

          There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

          About Me

           

          SCA java編碼入門

           

          調(diào)出單機的Tuscany運行時

          當(dāng)開始考慮Tuscany SCA java運行時環(huán)境的時候,理解高層調(diào)用是什么和為什么是非常有用的。當(dāng)前關(guān)于”Domain”對象有些實現(xiàn),該對象用于啟動Tuscany

          DefaultSCADomain –一個簡單的域?qū)崿F(xiàn),該實現(xiàn)隱藏了大部分的細(xì)節(jié)。現(xiàn)在為止用于大多數(shù)的測試用例。

          EmbeddedSCADomain – 用于將Tuscany嵌入到其他的系統(tǒng)中

          HotUpdateSCADomain - 當(dāng)他們改變的時候會自動裝載的例子

          EmbeddedNode - 分布式域中的一個節(jié)點

          一般認(rèn)為EmbeddedSCADomain在調(diào)出運行時給出了一個必要的好的入口點。這個類在svnhttp://svn.apache.org/repos/asf/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomain.java)并且測試程序可在(http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/modules/host-embedded/src/test/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomainTestCase.java)中看到。

           

          EmbeddedSCADomain類提供了將運行時的所有部件都集中在單個虛擬機里的SCA domain的實現(xiàn)。創(chuàng)建嵌入式domain很直接:

           

          domain = new EmbeddedSCADomain(cl, domainName);

          domain.start();

           

          domain上調(diào)用start方法會創(chuàng)建所有的運行時工件。特別地,所有的運行時擴展,比如implementation , binding , databinding , host會使用javaMETA-INF/services機制被加載和初始化。

          接下來要做的就是加載SCA應(yīng)用到域中。SCA應(yīng)用被作為contribution部署。Contributioncomposite文件(該文件是一個在SCA裝配規(guī)范中定義的結(jié)構(gòu))所需要的所有資源集合在composite文件中。這些資源可以是java,xml,xsd,swdl等等。EmbeddedSCADomain為讀取contribution提供了一個contribution服務(wù)。這里有一個獲取某個由URL標(biāo)識的contributioncontribution服務(wù)的例子。

          ContributionService contributionService = domain.getContributionService();

          Contribution contribution = contributionService.contribute("http://calculator",

                                                                     contributionURL,

                                                                     null, //resolver,

                                                                     false);

          這個會在內(nèi)存中生成一個裝配模型(詳情請查看我翻譯的裝配模型規(guī)范)。你能通過詢問最終生成的contribution來獲取模型的可部署部件。

          Composite composite =contribution.getDeployables().get(0);

          可部署模型的跟是composite。該composite包含了將運行于Tuscany運行時環(huán)境的組件層次信息。以下的各個步驟讓邏輯裝配模型變成可運行的工件,以便讓啟動組件。

          第一步,將模型composite添加到頂層的本地域控制中。

          Domain.getDomainComposite().getIncludes().add(composite);

          然后是將邏輯模型的各個部件連接到一起的構(gòu)建階段,不如對服務(wù)的引用等等。

          Domain.getCompositeBuilder().build(composite);

          最后基于邏輯模型創(chuàng)建運行時工件,這包括服務(wù)的endpoint和客戶端。

          Domain.getCompositeActivator().activate(composite);

          一旦所有的工作準(zhǔn)備就緒,域中的每個composite將獨立啟動。其實這個階段,支持web serviceservlet都已經(jīng)部署了。

          for (Composite composite : domain.getDomainComposite().getIncludes()) {

              Domain.getCompositeActivator().start(composite);

          }

           

          分布式運行時

           

          當(dāng)域是分布式地跨越多個VM的時候,就需要做這步。一旦邏輯模型已經(jīng)經(jīng)過了構(gòu)建階段,有一步是提供給運行時信息的,以便讓遠(yuǎn)程服務(wù)能自動地解決跨網(wǎng)絡(luò)的問題。也就是說我們將裝配模型中的所有服務(wù)和引用連起來構(gòu)成一個分布域的邏輯概念。

          distriutedDomain.addDistributedDomainToBindings(composite);

          posted on 2008-04-27 22:16 gembin 閱讀(642) 評論(0)  編輯  收藏 所屬分類: SCASOA

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(6)

          隨筆分類(440)

          隨筆檔案(378)

          文章檔案(6)

          新聞檔案(1)

          相冊

          收藏夾(9)

          Adobe

          Android

          AS3

          Blog-Links

          Build

          Design Pattern

          Eclipse

          Favorite Links

          Flickr

          Game Dev

          HBase

          Identity Management

          IT resources

          JEE

          Language

          OpenID

          OSGi

          SOA

          Version Control

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          free counters
          主站蜘蛛池模板: 江北区| 克拉玛依市| 洛川县| 邛崃市| 闽侯县| 富蕴县| 建昌县| 渝北区| 朝阳县| 永胜县| 肥乡县| 永寿县| 南江县| 新津县| 敦煌市| 车致| 丹巴县| 正安县| 潜江市| 金塔县| 海南省| 南充市| 青阳县| 视频| 昭觉县| 平遥县| 河西区| 遂川县| 芜湖县| 伽师县| 河池市| 玉田县| 株洲市| 广德县| 龙山县| 新晃| 佛坪县| 凉城县| 泌阳县| 安化县| 北碚区|