国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

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

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

開發(fā)者在線 Builder.com.cn 更新時間:2007-12-24作者:oracle1000g來源:論壇整理

本文關(guān)鍵詞: Apache Tuscany SCA JAVA 架構(gòu)

概述

  SCAJava運行時由core和extension組成。Core本質(zhì)上來說是一個多VM的wiring引擎。該引擎使用IOC(控制反轉(zhuǎn))和DI(依賴注入)原則來連接組件。

  Core

  Core在性能方面是簡單而有限的。它將功能單元連接在一起,并提供可以和extension交互的SPI機制。例如象服務(wù)發(fā)現(xiàn),可靠性,對傳輸協(xié)議的支持等特性都是通過extension來做的。

  Extension

  Extension增強SCA運行時的功能。Extesion類型不是固定的。而core則是通過提供對extension模塊開放支持來使得設(shè)計盡量靈活。

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

  關(guān)于如何實現(xiàn)一個extension的詳細信息可以在Extensions Guide中查看。

  運行時

  Core是設(shè)計得可以嵌入于許多不同的主機環(huán)境下的。例如,core也許用于OSGI容器、單獨的運行時環(huán)境、serlvet引擎或J2EE應(yīng)用服務(wù)器中。運行時的性能根據(jù)主機環(huán)境不同而不同。

  Java SCA運行時的高層概述:

  下圖是由關(guān)鍵的模塊/包組成的SCA運行時高層視圖

  1、 SCA Spec API:由SCA Java Client and Implementation定義的API

  2、 API:擴展了SCA Spec API的Tuscany API

  3、 Core:運行時實現(xiàn)和SPI擴展機制

  4、 Extension:

  1. Component(英文原版有錯誤) implementation – 擴展語言支持:例如BPEL,Python,C++,Ruby等

  2. Binding – 擴展協(xié)議支持:例如 Axis2, CXF等

  3. Interface Binding – 擴展服務(wù)定義類型:比如SWDL, Java等

  4. Databinding – 擴展數(shù)據(jù)支持:比如SDO, JAXB等

  5、 Host platforms:Tuscany運行時的主機環(huán)境

  

  

  內(nèi)部高層視圖

  參考下圖:

  

  

  引導(dǎo)過程

  引導(dǎo)過程是由主機環(huán)境控制的。默認的實現(xiàn)是DefaultBootstrapper。運行時由某個成型的SCA AssemblyXML文件序列化而來并處理服務(wù)裝配。

  •   裝載階段處理SCDL并創(chuàng)建一個內(nèi)存模型處理相應(yīng)的運行時工件(例如組件componet,服務(wù)service,引用reference)
  •   連接階段將對服務(wù)的引用連接起來

  



  裝配模型

  SCA裝配模型在Tuscany中是用一系列接口表示的。如下是些關(guān)鍵的元素。

  •   SCA component 是配置化的SCA實現(xiàn)的實例,它可以提供服務(wù)或消費服務(wù)。
  •   SCA service用于聲明實現(xiàn)的可以被外部訪問的服務(wù)
  •   SCA reference用于表示該實現(xiàn)對某些其他實現(xiàn)所提供的服務(wù)的依賴。該依賴的服務(wù)可以通過配置來指定。

  Implementation是用于描述軟件技術(shù)的概念,例如在面向服務(wù)的應(yīng)用中實現(xiàn)了一個或多個服務(wù)的Java類,BEPL,XSLT轉(zhuǎn)換,C++類。SCA composite也是implementaion。

  ComponentType涉及實現(xiàn)的可配置的方面。

  Interface定義了一個或多個業(yè)務(wù)功能。這些業(yè)務(wù)功能通過Service提供,通過Reference讓其他組件使用。服務(wù)是由實現(xiàn)的接口來定義的?,F(xiàn)在SCA支持兩種接口類型系統(tǒng):Java接口、SWDL portType

  SCA composite是SCA域中的compositon的基礎(chǔ)單元。SCAComposite是組件的裝配,服務(wù)、應(yīng)用和wire都互相連接。

  SCA wire將服務(wù)引用連接到服務(wù)上。

  Binding是被服務(wù)和引用所使用的。引用使用綁定來描述訪問機制,該機制用于訪問連接的服務(wù)。服務(wù)使用綁定來描述客戶程序調(diào)用服務(wù)的訪問機制。

  Property是考慮到有的實現(xiàn)配置需要顯式地設(shè)置數(shù)據(jù)值。該數(shù)據(jù)值由組件提供,當(dāng)然也可能來源于容器composite的屬性。

  

  

  Contribution

  Tuscany運行時提供了一個框架來支持SCA的contribution??蚣芸梢酝ㄟ^下列的兩個擴展點來擴展:

  PackageProcessorExtensionPoint:它用于處理不同的包裝格式或歸檔的擴展,可以是目錄、Jar、OSGIbundle、EAR、War或Zip。

  ArtifactProcessorExtensionPoint:它用于處理特定工件類型的擴展,可以是SWDL,XSD,composite,java類后BEPL。

  

  

  l 包處理器會掃描安裝了的contribution,并產(chǎn)生需要處理的工件列表。當(dāng)前有支持文件夾/文件系統(tǒng)和Jar contribution包。為了讓contribution服務(wù)有效,包處理器要注冊自己給包處理extension 。

  l 工件處理器用于處理contribution上的每個有效的工件。為了讓contribution服務(wù)有效,工件處理器要注冊自己給工件處理extension 。對于每個工件,工件處理器分兩個階段被調(diào)用。

  Ø 讀階段:這里是你讀取工件(可以是一個文檔、XML元素或類等等)的地方,組裝描述工件的模型并返回它。SCAcontribution服務(wù)在所有注冊了工件處理器的工件上調(diào)用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻裝載那些模型,你只需要保持描述引用的信息,在resolve階段,你將會把該信息轉(zhuǎn)換成指向被引用模型的指針。注意:你沒有必要在這個時刻完全讀取并裝載模型,你可以在以后來完成這些工作。

  Ø 解析階段:這個階段讓你有機會解析對其他模型的引用。這個時刻,SCAcontribution中所有的描述工件的模型都已經(jīng)讀取,并注冊了工件解析器,準備被解析。

  l 所有可部署的composite應(yīng)該在現(xiàn)在準備部署到SCA域中。

  包處理器會掃描安裝了的contribution,并產(chǎn)生需要處理的工件列表。當(dāng)前有支持文件夾/文件系統(tǒng)和Jarcontribution包。為了讓contribution服務(wù)有效,包處理器要注冊自己給包處理extension 。

  工件處理器用于處理contribution上的每個有效的工件。為了讓contribution服務(wù)有效,工件處理器要注冊自己給工件處理extension 。對于每個工件,工件處理器分兩個階段被調(diào)用。

  Ø讀階段:這里是你讀取工件(可以是一個文檔、XML元素或類等等)的地方,組裝描述工件的模型并返回它。SCA contribution服務(wù)在所有注冊了工件處理器的工件上調(diào)用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻裝載那些模型,你只需要保持描述引用的信息,在resolve階段,你將會把該信息轉(zhuǎn)換成指向被引用模型的指針。注意:你沒有必要在這個時刻完全讀取并裝載模型,你可以在以后來完成這些工作。

  Ø 解析階段:這個階段讓你有機會解析對其他模型的引用。這個時刻,SCAcontribution中所有的描述工件的模型都已經(jīng)讀取,并注冊了工件解析器,準備被解析。

  所有可部署的composite應(yīng)該在現(xiàn)在準備部署到SCA域中。

  實現(xiàn)擴展

  實現(xiàn)擴展負責(zé)實現(xiàn)類型的支持,例如Java,Script和BEPL

  綁定擴展

  綁定擴展負責(zé)對綁定類型進行支持,例如web service,JMS,JSON-RPC和RMI

  接口擴展

  接口擴展負責(zé)接口類型的擴展,例如Java接口和WSDL 1.1 portType

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

  請看我翻譯的Tuscany數(shù)據(jù)綁定指南

  Composite 激化

  在composite完整地配置后,就能在SCA域中激活它。Tuscany運行時用以下步驟激化composite:

  1、構(gòu)建composite:這個階段,composite模型更進一步地正規(guī)化來方便運行時的交互。元數(shù)據(jù)在service/reference提升后統(tǒng)一化了。根據(jù)這個扁平模型,我們可以獲取所有的組件級信息。

  2、配置composite:這個階段,composite層次結(jié)構(gòu)用于導(dǎo)航組件實現(xiàn)的配置信息。引用綁定和服務(wù)通過提供者工廠來創(chuàng)建運行時組件以及外部服務(wù)之間的連接。

  3、創(chuàng)建運行時連接(wire):這個階段,為組件引用和組件服務(wù)以選定的綁定形式創(chuàng)建運行時連接。運行時連接是一個調(diào)用鏈的集合。這些調(diào)用鏈按照操作來分成區(qū)。每個調(diào)用鏈都由一系列的調(diào)用器和攔截器構(gòu)成。調(diào)用器提供到綁定協(xié)議和實現(xiàn)技術(shù)的邏輯調(diào)用。攔截器是特定類型的調(diào)用器,為調(diào)用它提供了附加的功能,比如數(shù)據(jù)傳輸和事務(wù)控制。對于一個組件引用,我們創(chuàng)建運行時連接(wire)來描述以選定綁定的形式對外的調(diào)用。對于組件服務(wù),我們創(chuàng)建運行時連接(wire)來描述對實現(xiàn)的對內(nèi)調(diào)用?;卣{(diào)連接(callback wire)能附加到組件服務(wù)上來描述來自服務(wù)的一個回調(diào)調(diào)用。

4、啟動composite:這個階段,由ImplementationProvider、ReferenceBindingProvider和ServiceBindingProvider定義的start()回調(diào)方法會被調(diào)用。最終,組件,組件引用和組件服務(wù)被初始化而服務(wù)于組件的交互。服務(wù)監(jiān)聽器會啟動,從而接受來自綁定層(binding layer)的入內(nèi)請求。

  

  

  


  調(diào)用概述

  調(diào)用會被分發(fā)到WireInvocationHandler

  WireInvocationHandler查找正確的InvocationChain

  然后創(chuàng)建一個消息,設(shè)置有效負載,設(shè)置TargetInvoker,并傳遞消息給下層鏈

  當(dāng)消息到達鏈的末端,TargetInvoker會被調(diào)用,現(xiàn)在輪到TargetInvoker負責(zé)叫調(diào)用分發(fā)到目標

  存儲在outbound邊界上的TargetInvoker當(dāng)連接源的作用域值等于或小于目標的作用域值時,允許緩存目標實例。運行時環(huán)境通過Inboundwire和Outboundwire提供組件。調(diào)用鏈附著于組件連接(wire)中,因此是無狀態(tài)的。所以調(diào)用鏈可以具有動態(tài)行為,例如新攔截器的介入和重新連接。

  裝載SCA裝配

  工件處理器用于處理contribution上的每個有效的工件。為了讓contribution服務(wù)有效,工件處理器要注冊自己給工件處理extension 。對于每個工件,工件處理器分兩個階段被調(diào)用。

  Ø讀階段:這里是你讀取工件(可以是一個文檔、XML元素或類等等)的地方,組裝描述工件的模型并返回它。SCA contribution服務(wù)在所有注冊了工件處理器的工件上調(diào)用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻裝載那些模型,你只需要保持描述引用的信息,在resolve階段,你將會把該信息轉(zhuǎn)換成指向被引用模型的指針。注意:你沒有必要在這個時刻完全讀取并裝載模型,你可以在以后來完成這些工作。

  Ø 解析階段:這個階段讓你有機會解析對其他模型的引用。這個時刻,SCAcontribution中所有的描述工件的模型都已經(jīng)讀取,并注冊了工件解析器,準備被解析。

  裝載Java SCA

  SCA服務(wù)裝配以SCDL文件的形式被發(fā)布到SCA域中。Tuscany運行時工件處理器將SCDL裝載成一系列模型對象。這些模型對象是一系列持有元數(shù)據(jù)信息的Java bean。

  有兩種裝載器:

  •   StAXElementLoader:從StAX(Streaming API for XML)事件載入XML元素
  •   ComponentTypeLoader:通過解析文件或內(nèi)省機制來載入實現(xiàn)的組件類型

  裝載組件類型

  為特定的實現(xiàn)載入組件類型定義:

  •   如何做是實現(xiàn)規(guī)范
  •   也許會裝載XML文件(該文件由具體實現(xiàn)來定位)
  •   也許內(nèi)省實現(xiàn)工件(例如 Java注解機制)
  •   或其他的任何方式

  Loading composite componentType Loader

  •   從提供的URL中載入SCDL
  •   從composite包解壓并載入SCDL
  •   POJO componetType Loader
  •   內(nèi)省Java 注解
  •   利用可插入的注解處理框架來內(nèi)省Java類

  運行時工件的類圖

  

  

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Apache Tuscany SCA Java 架構(gòu)指南,Java實例教程,Java系列教...
SCA裝配模型規(guī)范V100之一
三句話講清楚SOA - - SOA面向服務(wù)架構(gòu)
SCA(Service Component Architecture)編程模型入門
FEM之在求解器中使用設(shè)計模式(3)---Composite模式
Java高手真經(jīng)(UML建模+設(shè)計模式+面向服務(wù)架構(gòu))
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服