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)出單機(jī)的Tuscany運(yùn)行時(shí)

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

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

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

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

          EmbeddedNode - 分布式域中的一個(gè)節(jié)點(diǎn)

          一般認(rèn)為EmbeddedSCADomain在調(diào)出運(yùn)行時(shí)給出了一個(gè)必要的好的入口點(diǎn)。這個(gè)類在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)并且測(cè)試程序可在(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類提供了將運(yùn)行時(shí)的所有部件都集中在單個(gè)虛擬機(jī)里的SCA domain的實(shí)現(xiàn)。創(chuàng)建嵌入式domain很直接:

           

          domain = new EmbeddedSCADomain(cl, domainName);

          domain.start();

           

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

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

          ContributionService contributionService = domain.getContributionService();

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

                                                                     contributionURL,

                                                                     null, //resolver,

                                                                     false);

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

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

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

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

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

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

          Domain.getCompositeBuilder().build(composite);

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

          Domain.getCompositeActivator().activate(composite);

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

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

              Domain.getCompositeActivator().start(composite);

          }

           

          分布式運(yùn)行時(shí)

           

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

          distriutedDomain.addDistributedDomainToBindings(composite);

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(6)

          隨筆分類(440)

          隨筆檔案(378)

          文章檔案(6)

          新聞檔案(1)

          相冊(cè)

          收藏夾(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

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          free counters
          主站蜘蛛池模板: 周宁县| 华蓥市| 诏安县| 新田县| 八宿县| 湾仔区| 麻阳| 华亭县| 四会市| 涞源县| 德兴市| 大英县| 承德市| 卢龙县| 四子王旗| 伊春市| 河曲县| 漳平市| 龙山县| 嘉鱼县| 湘潭市| 偃师市| 保德县| 渭南市| 琼结县| 凤山县| 高青县| 高邑县| 绥阳县| 措勤县| 环江| 横峰县| 荃湾区| 永丰县| 黄陵县| 沁水县| 洪湖市| 墨竹工卡县| 手游| 内乡县| 衡山县|