日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Apache Tuscany SCA Java 架構(gòu)指南,Java實(shí)例教程,Java系列教...

 gyb98 2011-04-03

Apache Tuscany SCA Java 架構(gòu)指南

www. 時(shí)間 : 2008-01-21 作者:佚名 編輯:本站 點(diǎn)擊: 589 [ 評(píng)論 ]

-

概況

SCA JAVA 運(yùn)行時(shí)是由內(nèi)核和擴(kuò)展兩部分組成。內(nèi)核本質(zhì)上是一個(gè)連接多個(gè)VM的引擎,使用依賴注入(Dependency Injection)和控制反轉(zhuǎn)( Inversion of Control)將構(gòu)件連接在一起。

內(nèi)核

其核心是設(shè)計(jì)簡(jiǎn)單和功能有限的。它將不同的功能單元連接到一起,并且提供SPIs以讓擴(kuò)展之間可以互動(dòng),例如服務(wù)發(fā)現(xiàn),可靠性,支持透明協(xié)議,等等。這些功能都以擴(kuò)展的方式提供。

擴(kuò)展

擴(kuò)展提高了SCA運(yùn)行時(shí)的功能型。擴(kuò)展類型并不固定,Tuscany的核心通過提供一個(gè)可調(diào)整的模型的設(shè)計(jì)使其盡可能的靈活。現(xiàn)在,已知的擴(kuò)展類型有:

  • 組件實(shí)現(xiàn)類型:例如,spring、Groovy、Javascript
  • 綁定類型:例如:Axis、CXF、AMQP、ActiveMQ、JXTA
  • 數(shù)據(jù)綁定類型:例如,JAXB、SDO、XmlBeans
  • 接口綁定類型:例如,WSDL、Java

具體細(xì)節(jié)可參考擴(kuò)展開發(fā)向?qū)?/a>

JAVA SCA 運(yùn)行時(shí)高層次概覽

下圖是Java SCA運(yùn)行時(shí)的一個(gè)高層次概覽,其中包括以下關(guān)鍵模塊:

  1. SCA規(guī)格API:SCA JAVA客戶端的API和執(zhí)行規(guī)格
  2. API:實(shí)現(xiàn)SCA規(guī)格API的Tuscany API
  3. 接口綁定:支持服務(wù)定義的類型,例如WSDL、Java……
  4. 數(shù)據(jù)綁定:實(shí)現(xiàn)數(shù)據(jù)支持,例如SDO、JAXB……
  5. 主機(jī)平臺(tái):提供Tuscany運(yùn)行時(shí)的環(huán)境

bootsrap

Bootstrap 進(jìn)程受主機(jī)環(huán)境控制。默認(rèn)進(jìn)程是由DefaultBootstrapper實(shí)現(xiàn)的。運(yùn)行時(shí)進(jìn)程服務(wù)使用SCA XML形式進(jìn)行集成,也可以采用其他形式:

  • 加載階段處理SCDL,并在內(nèi)存中創(chuàng)建一個(gè)對(duì)應(yīng)的運(yùn)行時(shí)對(duì)象(例如:組件、服務(wù)、引用)
  • 連接線將引用連接到服務(wù)

 

集成模型

SCA的裝配模型在Tuscany中是通過一系列接口實(shí)現(xiàn)的。以下是一些關(guān)鍵件:

  • SCA組件是由SCA實(shí)現(xiàn)的實(shí)例配置而成,它提供和銷毀服務(wù)
  • SCA服務(wù)用以聲明外部可訪問的服務(wù)實(shí)現(xiàn)
  • SCA引用表示一個(gè)對(duì)其他服務(wù)實(shí)現(xiàn)的引用,這里被使用的服務(wù)通過配置指定
  • 一種實(shí)現(xiàn)表示一種軟件技術(shù),例如Java類、BPEL流程、XSLT轉(zhuǎn)換、或者C++類,用以在SOA應(yīng)用中實(shí)現(xiàn)一個(gè)或多個(gè)服務(wù)。一個(gè)SCA集成也是一個(gè)實(shí)現(xiàn)。
  • 組件類型指的是可配置的實(shí)現(xiàn)方式
  • 接口定義了一個(gè)或多個(gè)業(yè)務(wù)功能,這些業(yè)務(wù)功能的實(shí)現(xiàn)由服務(wù)提供,通過引用為組件所使用,服務(wù)是由實(shí)現(xiàn)的接口所定義的,SCA目前支持兩種類型的接口:
    • Java接口
    • WSDL portTypes
  • 一個(gè)SCA Composite十一個(gè)SCA域中的基本單元,它由組件、服務(wù)、引用、它們之間的連線組成。
  • SCA聯(lián)結(jié)了服務(wù)引用和服務(wù)
  • 服務(wù)和引用之間使用綁定聯(lián)結(jié)。引用使用綁定描述服務(wù)之間相互訪問的機(jī)制,服務(wù)使用綁定描述客戶端訪問服務(wù)的機(jī)制
  • 屬性允許在外部實(shí)現(xiàn)的配置進(jìn)行設(shè)值,數(shù)據(jù)通過組件也可能源自于一個(gè)組合件的屬性提供。

發(fā)布

Tuscany運(yùn)行時(shí)提供了一個(gè)框架,以支持SCA發(fā)布。該框架可針對(duì)以下擴(kuò)展點(diǎn)進(jìn)行擴(kuò)展:

PackageProcessorExtensionPoint:負(fù)責(zé)處理不同的包或者檔案格式,例如:文件夾、JAR包、osgi包、EAR、WAR以及ZIP。

ArtifactProcessorExtensionPoint:負(fù)責(zé)處理具體類型的服務(wù),例如:WSDL、XSD、構(gòu)件、JAVA類、BPEL。

  • 包處理器在安裝時(shí)掃描發(fā)布包,并且創(chuàng)建一個(gè)待處理列表,目前支持文件夾/文件系統(tǒng)和jar發(fā)布包,為了對(duì)發(fā)布包可用,包處理器程序需要通過包處理器擴(kuò)展點(diǎn)進(jìn)行自我注冊(cè)。
  • 組件處理器被用來(lái)處理發(fā)布包中的組件,為了保持對(duì)發(fā)布服務(wù)可用,組件處理器需要使用組件處理擴(kuò)展進(jìn)行自我注冊(cè),組件處理器會(huì)在以下兩個(gè)步驟進(jìn)行調(diào)用:
    • 讀取: 在這里你可以讀取一個(gè)組件(一個(gè)文檔、XML、類等等),實(shí)例化一個(gè)代表組件的模型并銷毀它。SCA發(fā)布服務(wù)對(duì)注冊(cè)了ArtifactProcessor的組件調(diào)用ArtifactProcessor.read() 方法,如果你的模型對(duì)另外一個(gè)模型有引用,不要試圖也立即實(shí)例化另一個(gè)模型,你應(yīng)該只保留引用信息,在處理階段這將變成一個(gè)指針,注意現(xiàn)在你沒必要完全讀取并實(shí)例化你的模型,可以延遲實(shí)例化。
    • 處理:本階段給你機(jī)會(huì)使你可以處理對(duì)其他模型的引用(WSDL,類,其他復(fù)合組件,或者一個(gè)組件類型(componentType))。這時(shí),所有代表發(fā)布包里組件的模型被全部讀取出來(lái),并且在發(fā)布的 ArtifactResolver進(jìn)行注冊(cè),準(zhǔn)備處理。
  • 所有可以部署的復(fù)合組件都應(yīng)該部署在SCA域

 

實(shí)現(xiàn)擴(kuò)展

實(shí)現(xiàn)擴(kuò)展負(fù)責(zé)支持實(shí)現(xiàn)方式的類型:比如Java、Script、BPEL等。

綁定擴(kuò)展

綁定擴(kuò)展負(fù)責(zé)支持綁定方式的類型:Web服務(wù)、JMS、JSON-RPC以及RMI。

接口擴(kuò)展

接口擴(kuò)展負(fù)責(zé)支持接口的類型,例如Java接口和WSDL1.1 portType。

數(shù)據(jù)綁定擴(kuò)展

請(qǐng)參考Tuscany Databinding Guide。

復(fù)合組件激活

在一個(gè)復(fù)合組件在配置好以后,它可以在SCA域進(jìn)行激活,Tuscany運(yùn)行時(shí)通過以下步驟去激活它:

1、構(gòu)建:在此階段,復(fù)合組件被進(jìn)一步常態(tài)化,以更容易和運(yùn)行時(shí)互動(dòng),元數(shù)據(jù)在服務(wù)/引用升級(jí)以后進(jìn)行合并?;诒馄降哪P?,我們可以在構(gòu)建級(jí)獲取全部的信息。

2、配置:在此階段,復(fù)合組件的層次被引導(dǎo)到配置一個(gè)組件的實(shí)現(xiàn),在組件間以及組件和外部服務(wù)之間,引用綁定和服務(wù)綁定會(huì)在以后的步驟中用來(lái)創(chuàng)建運(yùn)行時(shí)連接。

3、創(chuàng)建運(yùn)行時(shí)連接: 在此階段,通過選定的綁定方式,創(chuàng)建了組件引用和組件服務(wù)的運(yùn)行時(shí)連接。運(yùn)行時(shí)連接是調(diào)用鏈的集合。每個(gè)執(zhí)行鏈包含一組執(zhí)行器和攔截器。執(zhí)行器為綁定協(xié)議和實(shí)現(xiàn)技術(shù)提供調(diào)用的邏輯,攔截器是一種特殊的執(zhí)行器,它為方法執(zhí)行提供了附加的邏輯,例如數(shù)據(jù)轉(zhuǎn)換以及交易控制。對(duì)于一個(gè)組件引用來(lái)說,我們創(chuàng)建運(yùn)行時(shí)連接來(lái)表示通過綁定的對(duì)外執(zhí)行;對(duì)于組件服務(wù)呢,我們創(chuàng)建運(yùn)行時(shí)連接表示對(duì)實(shí)現(xiàn)類型的向內(nèi)連接?;卣{(diào)連接可以被附加到組件服務(wù)之上,表示來(lái)自服務(wù)的回調(diào)執(zhí)行。

4、啟動(dòng)服務(wù)組件:在這個(gè)階段,ImplementationProvider, ReferenceBindingProvider和ServiceBindingProvider 定義的start() 回調(diào)方法將被調(diào)用,最后,組件、組件引用以及組件服務(wù)被初始化去服務(wù)組件間的互動(dòng)。服務(wù)監(jiān)聽器被啟動(dòng)已接受從綁定層來(lái)的連接請(qǐng)求。

調(diào)用概況

1、調(diào)用被分派到WireInvocationHandler

2、WireInvocationHandler 尋找正確的InvocationChain

3、創(chuàng)建一條消息,設(shè)值payload,設(shè)值TargetInvoker,然后將消息通過鏈向下傳遞

4、當(dāng)消息到達(dá)鏈的底部后,TargetInvoker 會(huì)被調(diào)用,它按順序?qū)δ繕?biāo)進(jìn)行調(diào)度

5、當(dāng)將TargetInvoker 存儲(chǔ)后,當(dāng)連接源的可視范圍等于或小于目標(biāo)時(shí)(例如:request-》composite),外向端允許將目標(biāo)實(shí)例進(jìn)行緩存。

運(yùn)行時(shí)提供具有InboundWires 和OutboundWires的構(gòu)件。InvocationChains 被構(gòu)件連接所持有,因此它是無(wú)狀態(tài)的,允許引入新的攔截器以及重新連接等動(dòng)態(tài)事件的發(fā)生。

加載SCA部件

組件處理器

組件處理器被用來(lái)處理發(fā)布包中的組件,為了保持對(duì)發(fā)布服務(wù)可用,組件處理器需要使用組件處理擴(kuò)展進(jìn)行自我注冊(cè),組件處理器會(huì)在以下兩個(gè)步驟進(jìn)行調(diào)用:

  • 讀?。?在這里你可以讀取一個(gè)組件(一個(gè)文檔、XML、類等等),實(shí)例化一個(gè)代表組件的模型并銷毀它。SCA發(fā)布服務(wù)對(duì)注冊(cè)了ArtifactProcessor的組件調(diào)用ArtifactProcessor.read() 方法,如果你的模型對(duì)另外一個(gè)模型有引用,不要試圖也立即實(shí)例化另一個(gè)模型,你應(yīng)該只保留引用信息,在處理階段這將變成一個(gè)指針,注意現(xiàn)在你沒必要完全讀取并實(shí)例化你的模型,可以延遲實(shí)例化。
  • 處理:本階段給你機(jī)會(huì)使你可以處理對(duì)其他模型的引用(WSDL,類,其他復(fù)合組件,或者一個(gè)組件類型(componentType))。這時(shí),所有代表發(fā)布包里組件的模型被全部讀取出來(lái),并且在發(fā)布的 ArtifactResolver進(jìn)行注冊(cè),準(zhǔn)備處理。

加載JAVA SCA

SCA服務(wù)部件在SCA里以SCDL文件的形式進(jìn)行部署,Tuscany運(yùn)行時(shí)組件處理器加載這些SCDL到模型對(duì)象,這些對(duì)象包含了元數(shù)據(jù)。

有兩種主要的加載器:

1、StAXElementLoader:從StAX 事件加載XML

2、ComponentTypeLoader:為一個(gè)實(shí)現(xiàn)加載組件類別或者處理一個(gè)文件

加載組件類別

為實(shí)現(xiàn)規(guī)范加載組件類型定義

1、如何實(shí)現(xiàn)是實(shí)現(xiàn)規(guī)范

運(yùn)行時(shí)組件的類圖

 

 


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多