![可移植對象適配器_第1頁](http://file4.renrendoc.com/view/9111690b4f523c0be927a71a76b39196/9111690b4f523c0be927a71a76b391961.gif)
![可移植對象適配器_第2頁](http://file4.renrendoc.com/view/9111690b4f523c0be927a71a76b39196/9111690b4f523c0be927a71a76b391962.gif)
![可移植對象適配器_第3頁](http://file4.renrendoc.com/view/9111690b4f523c0be927a71a76b39196/9111690b4f523c0be927a71a76b391963.gif)
![可移植對象適配器_第4頁](http://file4.renrendoc.com/view/9111690b4f523c0be927a71a76b39196/9111690b4f523c0be927a71a76b391964.gif)
![可移植對象適配器_第5頁](http://file4.renrendoc.com/view/9111690b4f523c0be927a71a76b39196/9111690b4f523c0be927a71a76b391965.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、可移植對象適配器11.2 簡介 POA技術(shù)提供地最基本地服務(wù)是:對象創(chuàng)建、伺服程序注冊以及請求地調(diào)調(diào)度。POA提供了一整套特性和服務(wù),可以利用它來編寫可擴縮的、高性能的服務(wù)器應(yīng)用程序,它在合理控制資源請求方面起著重要的作用。11.3 POA基本原理 在一個服務(wù)器應(yīng)用程序中,POA負責(zé)創(chuàng)建對象、激活對象以及將對各個對象的請求調(diào)度到它們各自的伺服程序上,通過POA,CORBA對象完成了編程語言所提供的伺服程序的相互對應(yīng)關(guān)系。 當一個對象處于激活狀態(tài)時,該對象就可以接收并執(zhí)行請求。當對象得到一個請求后,該對象必須由伺服程序進行具體化,或給它以具體形式。一個給定對象僅由一個單個的伺服程序在給定點及時進
2、行具體化,但超時以后,可以創(chuàng)建許多伺服程序?qū)嵗齺砭唧w化一個CORBA對象。最后每一個伺服程序釋放后就結(jié)束了它與相對應(yīng)的CORBA對象之間的連接。 具體化和釋放是應(yīng)用于伺服程序的,創(chuàng)建和撤消是應(yīng)用于CORBA對象的。111.3.1 基本的請求調(diào)度基本調(diào)度如下: (1) 首先,服務(wù)器應(yīng)用程序以某種方式為CORBA對象到處一個對象引用??蛻魴C可能通過命名服務(wù)或者交易服務(wù)或者從另一個請求接收它來獲得到處對象引用。對象引用從邏輯上“指向”目標CORBA對象,像C+指針指向它底層的C+對象一樣。 (2) 其次,在應(yīng)用程序的控制下,客戶程序ORB使用對象引用來決定對象駐留在何處和如何訪問它,然后它向服務(wù)器O
3、RB發(fā)送請求。 (3) 再次,服務(wù)器ORB接收請求并將其調(diào)度給擁有該目標對象的POA。 (4) 最后,POA通過調(diào)用具體化該目標對象的伺服程序來繼續(xù)執(zhí)行該調(diào)度。211.3.2 關(guān)鍵的POA實體有三種關(guān)鍵實體涉及到POA 對象引用 POA負責(zé)創(chuàng)建對象引用。 對象標識符 在POA主機的作用域內(nèi),每一個對象通過調(diào)用一個octet序列的對象標識符進行識別。當POA創(chuàng)建一個新的CORBA對象時,典型情況是,它就將對象標識符嵌入在對象引用的對象密鑰部分。 伺服程序 引用程序直接通過POA可以創(chuàng)建并注冊伺服程序來具體化對象。同樣,應(yīng)用程序可以向POA提供伺服程序管理器對象,當需要執(zhí)行一個請求時,POA就能創(chuàng)
4、建伺服程序。應(yīng)用程序甚至可以提供一個默認的伺服程序。與POA策略有關(guān),在任何給定的時間,單個的伺服程序可以用POA注冊來具體化一個和多個的CORBA對象。 POA通過目標對象的對象標識符與合適的伺服程序之間的映射來調(diào)度請求。一個伺服程序也可以通過對一個伺服程序的_this調(diào)用隱式創(chuàng)建一個新的CORBA對象,并為其注冊一個伺服程序。311.4 POA策略POA規(guī)范的關(guān)鍵特性就是一個應(yīng)用程序可以包含多個POA實例。每一個POA實例代表具有相似性能的一組對象。這些性能通過POA創(chuàng)建時所指定的POA策略來控制。所有應(yīng)用程序至少有一個POA,也就是Root POA,它具有標準的策略集。策略是用來定義PO
5、A性能的對象,該對象在策略內(nèi)部創(chuàng)建。向POA和POAManager接口一樣,CORBA規(guī)范指出,在標準的PortableServer模塊中定義POA策略接口。像所有的策略接口一樣,POA策略類從CORBA:Policy接口派生出來。Policy接口及相關(guān)的類型提供的管理操作 (1) 通過基本的Policy接口,利用policy_type只讀屬性可以確定策略的實際派生類型。 PolicyType是由OMG控制的一個標志值,這樣可以確保所有的標準接口都有一個唯一的標志 (2) copy操作可以克隆(clone) 一個Policy對象。返回的引用指向目標Policy對象的一個全新的拷貝。4POA策略
6、(3) destory操作用來撤消目標Policy對象。(4) PoicyList用來將指向各種派生Policy對象的引用分組來形成策略集。POA創(chuàng)建操作接收一個PolicyList類型的參數(shù),這個參數(shù)可以將策略設(shè)置成新的POA。策略對象是局部約束對象。也就是任何試圖將它們的引用作為參數(shù)傳遞給標準的CORBA操作或通過ORB:object_to_string將它們轉(zhuǎn)換成字符串的操作都將產(chǎn)生CORBA:MARCHAL異常。511.4.1 CORBA對象生存期范圍假如一個客戶程序向一個當前沒有運行或沒有激活的目標對象發(fā)出一個請求,如果必要的話,ORB工具就會為該對象激活一個服務(wù)器進程,然后激活對象
7、本身。服務(wù)器進程和目標對象的任何激活對發(fā)出請求的客戶來說都是透明的。持久對象:生存期超過創(chuàng)建或激活它們的某一特定進程的CORBA對象。除了持久對象外,其它的對象的生命周期由進程的生命周期甚至于創(chuàng)建它們的對象適配器來決定。611.4.2 對象標識符POA通過它的對象標識符識別每一個對象。對象標識符被賦值為ObjectId類型,這個類型在PortableServer模塊中定義為octet的一個序列。一個程序可以顯示的提供自己的對象標識符,也可以讓POA為它創(chuàng)建對象標識符。對象標識符和對象引用的主要區(qū)別是在命名一個對象的POA作用域外,對象標識符是無意義的。在單個POA的作用域內(nèi),所有對象標識符必須
8、是唯一的。如果使用具有SYSTEM_ID策略值的POA,POA就會自動生成唯一的ID。如果使用具有USER_ID策略值的POA,POA就會通過產(chǎn)生異常來防止兩個相同的ID。對象標識符由IdAssignmentPolicy來控制711.4.3 對象到伺服程序之間的映射一個只有少量幾個暫態(tài)對象的應(yīng)用程序在開始監(jiān)聽請求前,可能會為每個對象創(chuàng)建各自的伺服程序并使用POA注冊它們。擁有多個持久CORBA對象的應(yīng)用程序可能只需要一個伺服程序來具體化所有的這些對象。對象標識符映射到用UNIQUE_ID策略值創(chuàng)建的POA中的下伺服程序。 當調(diào)用一個請求時,POA先提取出ObjectId,通常ObjectId嵌
9、入在目標對象的對象引用中,然后使用該ObjectId在激活的對象映射中查找目標對象的伺服程序。在激活的對象映射中的每一個條目由一個ObjectId和一個指向一個伺服程序的指針的關(guān)聯(lián)組成。保留ObjectId對伺服程序關(guān)聯(lián)的每一個POA都有它自己的激活的對象映射。對于UNIQUE_ID,POA實現(xiàn)的規(guī)則是每一個對象標識符映射到一個不同的伺服程序。而在一個MULTIPLE_ID中,多個對象標識符可以映射到一個伺服程序。 對于Root POA,標準的對象標識符的唯一策略值是 UNIQUE_ID。Root POA要求一個獨立的伺服程序來具體化每一個對象。811.4.4 策略工廠操作 通過調(diào)用POA的策
10、略工廠操作可以創(chuàng)建策略。POA接口為每個類型都提供了一個獨立的策略工廠操作。每一個策略工廠操作都一同樣的方式工作:向新的策略對象傳遞所需的值,然后操作返回對象引用。最終,必須調(diào)用返回對象中的destroy操作來撤銷它。911.5 POA創(chuàng)建為了讓POA策略有效,在創(chuàng)建時就將它們應(yīng)用于POA。通過調(diào)用另一個POA的create_POA可以創(chuàng)建一個POA。因為所有的服務(wù)器應(yīng)用程序都有一個Root POA,所以它的create_POA操作起到了創(chuàng)建其它POA的起始點的作用。使用另一個POA創(chuàng)建的POA就成了正在創(chuàng)建的POA的子POA。但是,這對子POA的策略沒有影響,策略并不繼承符父POA。相反,如
11、果沒有策略值傳遞給create_POA操作,則使用默認值。在IDL定義時需要注意: POAManager允許應(yīng)用程序控制一個POA中的請求流。 create_POA操作有三個參數(shù)。POA的名稱、指向為要創(chuàng)建的POA控制請求流的POAManager的一個引用,為空將創(chuàng)建一個新的、創(chuàng)建POA策略列表。 create_POA 操作可能會產(chǎn)生兩個異常。同名AdapterAlreadyExists異常。策略未知或不一致InvalidPolicy10POA創(chuàng)建POA策略的創(chuàng)建: CORBA:PolicyList policy_list PortableServer:POA_var child_poa=ro
12、ot_poa-create_POA(“child”,PortableServer:POAManager:_nil(), policy_list) (1) 先初始化ORB和從Root POA獲得一個引用的一般調(diào)用序列 (2) 創(chuàng)建一個CORBA:PolicyList序列,默認為空 (3) 調(diào)用Root POA的create_POA,傳遞字符串“child”作為新的POA的名字,同時傳遞的參數(shù)還有一個空的POAManager引用和空的策略列表。 也可以創(chuàng)建一分層的POA。例如: PortableServer:POA_var poa_A=root_poa-create_POA(“A”,) Porta
13、bleServer:POA_var poa_B=poa_A-create_POA(“B”,) PortableServer:POA_var poa_C=poa_B-create_POA(“C”,)1111.6 Server IDL類型native類型 native類型的目的是允許IDL標識符可以被說明為沒有IDL定義的一種類型,但是這種類型可由每種語言映射來單獨進行定義。 在C+中,Servant類型映射到一個指向ServantBase類的指針。 ServantBase可視為所有框架的基類,也就是所有應(yīng)用程序伺服類的基類。 ServantBase提供_default_POA函數(shù), _defau
14、lt_POA函數(shù)的ServantBase實現(xiàn)返回一個指向Root POA的引用。當調(diào)用一個伺服程序的_this函數(shù)來隱式創(chuàng)建并激活一個新的暫態(tài)CORBA時, _default_POA提供POA引用。1211.7 對象創(chuàng)建和激活11.7.1 對象創(chuàng)建 POA提供兩種不用創(chuàng)建伺服程序就可以創(chuàng)建CORBA對象的操作。 create_refernce和create_refernce_with_id都需要一個RepositoryId參數(shù)來識別新對象支持的大多數(shù)派生的IDL接口。 create_refernce操作要求POA具有一個值為SYSTEM_ID的IdAssignmentPolicy值,以便POA
15、為新的對象生成ObjectId。如果沒有,將會引發(fā)WrongPolicy異常。使用create_refernce_with_id時,應(yīng)用程序提供Object_Id。這個Object_Id在應(yīng)用程序域內(nèi)表示對象的身份。 Object create_refernce(in CORBA:RepositoryId intf) raises(WrongPolicy); Object create_refernce_with_id(in ObjectId oid, CORBA:RepositoryId intf) raises(WrongPolicy);13對象創(chuàng)建和激活11.7.2 伺服程序注冊 激活一
16、個對象的最簡單方法之一就是使用POA對象激活操作。使用這些操作,應(yīng)用程序開發(fā)人員顯式提供一個伺服程序來具體化將被激活的對象,并且根據(jù)POA的IdAssignmentPolicy,POA賦值一個ObjectId或應(yīng)用程序開發(fā)人員提供一個ObjectId。 根據(jù)目標POA的策略,選擇使用active_object或activate_object_with_id。 active_object操作要求目標POA具有值為SYSTEM_ID的一個IdAssignmentPolicy和值為RETAIN的一個ServerRetentionPolicy值。 activate_object_with_id操作要求
17、目標POA具有RETAIN的一個ServerRetentionPolicy值。 如果POA的IdUniquenessPolicy設(shè)置為UNIQUE_ID并且為一個參數(shù)傳遞Servant已經(jīng)存在于POA的激活對象映射中,它們倆都將引發(fā)ServantAlreadyActive異常。14對象創(chuàng)建和激活11.7.3 伺服程序管理器 具有USE_SERVANT_MANAGER策略的POA允許它們創(chuàng)建伺服程序來支持這些類型的應(yīng)用程序,這些伺服程序參與確定對象對伺服程序關(guān)聯(lián)的過程。 伺服程序管理器有兩種類型。 (1) 對于ServantRetention策略值是RETAIN的POA,伺服程序管理器對象必須支
18、持ServantActivator接口。 (2) 對于策略值是NON_RETAIN的POA,伺服程序管理器必須支持ServantLocator接口。 伺服程序激活器(Servant Activators) ServantActivator接口提供incarnate和etherealize操作 incarnate操作用來實現(xiàn)或是創(chuàng)建一個伺服程序的一個合適的實例并返回它,或者產(chǎn)生一個異常。 etherealize函數(shù)的功能剛好與incarnate函數(shù)相反。它允許應(yīng)用程序清除它們的伺服程序。 15對象創(chuàng)建和激活伺服程序定位器(Servant Locators) 對于使用USE_SERVANT_MAN
19、AGER和NON_ RETAIN策略的POA,伺服程序管理器必須支持ServantLoactor接口。此接口提供了preinvoke和postinvoke操作。 preinvoke函數(shù)用來獲得一個要調(diào)度給請求的伺服程序。在請求返回后,POA調(diào)用postinvoke來讓ServantLocator執(zhí)行伺服程序清除或其后調(diào)用函數(shù)。直到POA涉及之前,由postinvoke返回的伺服程序只用于單個的請求。伺服程序管理器注冊 因為伺服程序本身是CORBA對象,所以需要通過POA用它們的對象引用來注冊它們,為伺服程序管理器創(chuàng)建一個對象引用的最容易的方法是隱式在Root POA注冊它的伺服程序。 Port
20、ableServer:ServantManage_var mgr_ref=manager_impl._this(); poa-set-servant_manager(mgr_ref);16對象創(chuàng)建和激活11.7.4 默認的伺服程序 POA的RequestProcessingPolicy之為USE_DEFAULT_SERVANT時,就表示使用默認的伺服程序。 ProtableServer:Current接口 在一個請求調(diào)度的過程中,服務(wù)器ORB可以讓一個應(yīng)用程序獲得目標對象的ObjectId和正在調(diào)度請求的POA的一個引用。這些操作由ProtableServer:Current接口提供。 get
21、_POA函數(shù)用來獲得一個引用 get_object_id函數(shù)用來獲得目標對象的ObjectId1711.8 引用、ObjectId和伺服程序servant_to_id操作返回與目標伺服程序關(guān)聯(lián)的ObjectId。servant_to_reference操作返回伺服程序正在進行具體化的對象的對象引用。reference_to_servant操作返回指向?qū)ο笠盟呋膶ο蟮乃欧绦?。reference_to_id操作在傳遞給它的對象引用參數(shù)中返回對象IDid_to_reference操作為由對象ID參數(shù)代表的對象返回一個對象引用。id_to_servant操作返回與確定的對象ID相關(guān)聯(lián)的伺服程序
22、。1811.9 對象失效最終,所有的CORBA對象必須失效。因為激活一個CORBA對象需要設(shè)置一個對象對伺服程序的關(guān)聯(lián),所以為了使一個對象失效,就需要中斷這種對象與伺服程序的關(guān)聯(lián)。通過調(diào)用擁有該對象的POA上的deactivate_object就可以達到這個目的。在調(diào)用這個函數(shù)時,要將對象的ObjectId作為唯一的參數(shù)進行傳遞。一旦沒有對該ObjectId其它的有效請求,最終POA會在它的激活對象映射中刪除ObjectId與伺服程序的關(guān)聯(lián)。1911.10 請求流控制資源管理的另一個方面與一個服務(wù)器程序可以處理的應(yīng)用程序的請求率有關(guān)。每一個POA具有一個相關(guān)的POAManager,從本質(zhì)上說P
23、OAManager起到一個讓你控制對POA的請求流的水龍頭或閥門的作用。POAManager接口提供的四周操作與POAManager對象的四種狀態(tài)相對應(yīng)。 (1) 可以調(diào)用activate操作來讓目標POAManager轉(zhuǎn)換到active狀態(tài)并且讓請求流通向POA或它所控制的POA。(2) 可以調(diào)用hold_reauests操作來將目標POAManager的狀態(tài)改變到holding狀態(tài)。在這種狀態(tài)下, POAManager將所有向POA或向它控制下的POA所做的請求進行排隊。(3) 可以調(diào)用discard_request操作來將目標POAManager的狀態(tài)改變?yōu)閐iscarding狀態(tài),在這
24、種狀態(tài)下, POAManager將每個進入的請求丟棄,不排隊并且不將它傳送給目標POA;相反,他會將CORBA:TRANSIENT異常返回給客戶。(4) 可以調(diào)用deactivate操作將目標POAManager的狀態(tài)改為inactive狀態(tài)。在這種狀態(tài)下的POAManager不再處理請求并且不能被重新激活。2011.11 ORB事件處理任何一個作為服務(wù)器程序的CORBA應(yīng)用程序必須接收并處理事件,比如來自客戶要求的連接和它們的后繼的請求。就事件處理而論,服務(wù)器引用程序可以分為兩類。 (1) 在一些應(yīng)用程序中,只有ORB需要接收并處理這樣的事件。這些應(yīng)用程序可以僅將控制主線程交給ORB,這樣它
25、就可以處理請求并調(diào)度它們給對象適配器和伺服程序。這樣的應(yīng)用程序可以說是執(zhí)行blocking事件處理,因為應(yīng)用程序main將被阻阻塞,直到ORB關(guān)閉它的事件處理并將控制返回給main。 (2) 在另一些應(yīng)用程序中,ORB只是必須執(zhí)行事件處理的幾種組件中的一個。比如,一個具有圖形用戶接口(GUI)的CORBA應(yīng)用程序除了讓ORB處理輸入的請求外,還必須讓GUI處理窗口事件。所以這些類型的應(yīng)用程序執(zhí)行non_blocking事件處理。它們將控制主線程交給各種事件處理子系統(tǒng)的每一個,而不允許它們中的任何一個阻塞有效的事件周期。 就像POAManager對象允許你控制POA的請求流一樣,ORB提供各種操
26、作允許你控制整個應(yīng)用程序的請求流和事件處理,也包含所有的對象適配器。21ORB事件處理11.11.1 阻塞事件處理 ORB:run操作將阻塞,直到ORB停止運行。從執(zhí)行你的應(yīng)用程序main的線程中調(diào)用run,可以讓ORB接管主線程來執(zhí)行它的工作。ORB保持對主線程的控制,并且在調(diào)用ORB:shutdown和ORB完全停止運行后才返回。從任何其它線程中調(diào)用run,只能等到ORB停止后,才可以阻塞那個線程。11.11.2 非阻塞事件處理 當ORB接管主線程時,ORB:run操作可以讓應(yīng)用程序運行。但是對于其它事件循環(huán)共享主線程的應(yīng)用程序,將主線長的控制交給ORB是不可接收的。11.11.3 應(yīng)用程
27、序停止運行 當你想關(guān)閉應(yīng)用程序時,調(diào)用ORB:shutdown。他只含有唯一的boolean參數(shù),這個參數(shù)告訴應(yīng)用程序阻塞是否要等待所有關(guān)閉的活動結(jié)束才進行或者在所有關(guān)閉的工作完成前它就返回。22ORB事件處理服務(wù)器應(yīng)用程序通常有三種方式關(guān)閉 (1) 應(yīng)用程序可以使用一種超時的方法。 (2) 用戶可以通過向正在運行的應(yīng)用程序發(fā)送一個信號來強制執(zhí)行關(guān)閉。 (3) 另一種方法可能是調(diào)用由應(yīng)用程序CORBA對象提供的一些shutdown操作。2311.12 POA激活像伺服程序一樣,POA可以按要求創(chuàng)建,這種方法用于很少調(diào)用POA的對象的應(yīng)用程序。當接到一個向還沒有創(chuàng)建的子代POA真的對象所做的請求
28、時或應(yīng)用程序使用一個已經(jīng)命名但還沒有創(chuàng)建的POA的POA:find_POA操作來搜索POA的層次結(jié)構(gòu)時,POA就會激活應(yīng)用程序必須通過激活它的子代POA的每個POA來注冊一個AdapterActivator。適配器激活器是一個普通的CORBA對象,所以它們可以通過伺服程序來具體化。一個適配器激活將的C+伺服程序從POA_PortableServer:AdapterActivator框架中派生出來。在此伺服類中唯一的有意義的成員函數(shù)是unknown_adapter函數(shù)。他包含一個指向?qū)⒈患せ畹腜OA的父POA的引用以及新的POA名字。2411.13 POA析構(gòu)最終,POA必須被撤消,通常是由于O
29、RB的關(guān)閉和服務(wù)器應(yīng)用程序進程的結(jié)束。但是在應(yīng)用程序關(guān)閉時并沒有撤消。例如,一個打算保持運行的應(yīng)用程序可能追蹤一個給定POA擁有的所有對象,然后在它以前所創(chuàng)建的所有對象都撤消后,撤消該POA。使用POA:destory操作可以撤消POA。2511.14 應(yīng)用POA策略在應(yīng)用程序中的POA數(shù)量以及為每個POA選擇的策略與幾個因素有關(guān)。其中的一些因素如下: (1) 你的應(yīng)用程序打算支持的對象的數(shù)量 (2) 請求的期望率和持續(xù)時間 (3) 你的對象所需要的潛在的持久存儲 (4) 應(yīng)用程序所運行的計算機和操作系統(tǒng)提供的資源和服務(wù)水平 (5) 應(yīng)用程序必須包括的或者是有相互影響的任何非CORBA軟件 (
30、6) 應(yīng)用程序運行的部分域的一些特征,尤其是將對象重新定位在域中其它服務(wù)器上的能力是否理想26應(yīng)用POA策略11.4.1 多線程問題 應(yīng)用程序必須做出的基本的選擇是它們是單線程還是多線程。這個選擇依賴于下面的幾個細節(jié):(1) 所使用的操作系統(tǒng)或C+語言運行時是否提供足夠的多線程支持(2) 你的ORB實現(xiàn)對線程的要求(3) 調(diào)試多線程應(yīng)用程序所使用的工具(4) 你的創(chuàng)建和維護多線程應(yīng)用程序的專業(yè)知識和經(jīng)驗水平(5) 在你的應(yīng)用程序中使用的任何第三方庫在對線程環(huán)境下正確工作的能力。27應(yīng)用POA策略11.14.2 ObjectId賦值 決定一個POA的值為USER_ID還是SYSTEM_ID的Id
31、AssignmentPolocy的一個簡單規(guī)則為:為暫態(tài)對象使用系統(tǒng)賦值的對象標識符,而對持久對象使用用戶賦值的標識符。典型情況是使用值為UESR_ID的IdAssignmentPolocy,同時使用值為PERSISTENT的LifespanPolicy,因為創(chuàng)建對象的ObjectId通常包含一些你在何處存儲對象創(chuàng)建狀態(tài)的指示。如果應(yīng)用程序使用文件系統(tǒng)路徑名或數(shù)據(jù)庫的鍵值作為持久對象的ObjectIds。對于暫態(tài)對象,將POA賦值為ObjectIds是最簡單的方法,因為通常你的應(yīng)用程序并不直接使用生成的標識符。11.14.3 激活 只能將USER_ID和PERSISTENT一塊使用;將IMPL
32、ICIT_ACTIVATION和SYSTEM_ID一起使用。 建議: 支持ServantRetentionPolicy值為 RETAIN,IdAssignmentPolicy的值為 SYSTEM_ID,IDUniquenessPolicy的值為NIQUE_ID,LifespanPolicy的值為TRANSIENT的POA使用IMPLICIT_ACTIVATION。這是因為對一個伺服程序使用_this函數(shù)來隱式創(chuàng)建并激活暫態(tài)對象可非常方便地創(chuàng)建Policy對象,伺服程序管理器,迭代器以及其它暫態(tài)對象,對擁有持久對象的POA使用默認的NO_IMPLICITACTIVATION。28應(yīng)用POA策略1
33、1.14.4 時空折衷 POA請求需要時間和空間有兩個主要方面: (1) POA定位域目錄對象ObjectId相關(guān)聯(lián)的一個伺服程序需要時間和空間資源。這主要包括在激活對象映射中的查找,調(diào)用一個伺服程序管理器所需要的時間和確定是否使用一個默認伺服程序所需的時間。 (2) 伺服程序確定對一個給定的請求應(yīng)具體化哪一個對象需要的時間和空間。11.14.5 關(guān)于生命范圍的考慮 面向服務(wù)的應(yīng)用程序通常具有兩個特征:(1) 它們由長命的對象組成,這些長命的對象通過管理工具創(chuàng)建和撤消。(2) 它們對象的狀態(tài)完全存儲在持久存儲中。29應(yīng)用POA策略面向會話的應(yīng)用程序 面向會話的應(yīng)用程序:客戶創(chuàng)建它們打算使用的對
34、象,使用這些對象,然后撤消它們。 與面向服務(wù)器的應(yīng)用程序相比,它擁有的大多數(shù)對象是通過對象工廠中的請求創(chuàng)建的。通常這個工廠本身是面向服務(wù)的持久對象并且在命名服務(wù)和交易服務(wù)中公告。客戶首先使用這些服務(wù)來尋找必須的工廠,然后,它們想改工廠做出請求以創(chuàng)建它們需要的會話對象。它是一個暫態(tài)的。持久對象 即使擁有它們的服務(wù)器應(yīng)用程序當前并不在執(zhí)行并且必須啟動,但支持持久的CORBA對象的一個ORB實現(xiàn)必須能夠定位他們并將請求傳遞給它們。這也就隱式說明擁有持久對象的應(yīng)用程序不能孤立的操作。相反,這樣的服務(wù)器撤消必須使用ORB實現(xiàn)倉庫進行注冊以讓ORB來跟蹤它們擁有的對象并且當請求調(diào)用這些對象時能夠激活它們。
35、30應(yīng)用POA策略暫態(tài)對象 與持久對象不同,暫態(tài)對象不需要對定位和激活有效的支持。這樣持久它們就非常適合于處理短期的或局部的活動。 策略值不是TRANSIENT的POA還有幾種有意義的用途,他不同于Root POA。(1)因為Root POA的ThreadPolicy的值為ORB_CTRL_MODEL,所以一個應(yīng)用程序想讓它的暫態(tài)對象所做的所有請求順序調(diào)度的話,需要一個具有SINGLE_THREADMODEL值的POA。(2)一個應(yīng)用程序可以要求一個擁有暫態(tài)對象的POA,它的IdAssignmentPolicy值為USE_ID而不是Root POA所具有的SYSTEM_ID。(3) 它可以用于策略值
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- -2024年版高中數(shù)學(xué) 第3章 數(shù)系的擴充與復(fù)數(shù)的引入 3.3 復(fù)數(shù)的幾何意義說課稿 蘇教版選修1-2
- DB37-T 4390-2021 基于移動互聯(lián)網(wǎng)應(yīng)用程序的人力資源社會保障政務(wù)服務(wù)規(guī)范
- DB37-T 4420-2021 淺海模塊化地質(zhì)鉆探平臺安裝及驗收規(guī)范
- 保密協(xié)議與競業(yè)限制有何不同
- 數(shù)字內(nèi)容平臺的用戶留存策略考核試卷
- 數(shù)字創(chuàng)意營銷社交媒體與創(chuàng)新廣告策略考核試卷
- 衛(wèi)生陶瓷生產(chǎn)成本控制考核試卷
- 醫(yī)院污水合同范本
- 倉庫臨時租賃服務(wù)合同范本
- 應(yīng)急響應(yīng)與事故處理考核試卷
- GB/T 26189.2-2024工作場所照明第2部分:室外作業(yè)場所的安全保障照明要求
- 新教科版一年級科學(xué)下冊第一單元《身邊的物體》全部課件(共7課時)
- 2025年中國水解聚馬來酸酐市場調(diào)查研究報告
- 高考百日誓師動員大會
- 2024年北京東城社區(qū)工作者招聘筆試真題
- 七上 U2 過關(guān)單 (答案版)
- 2024年貴銀金融租賃公司招聘筆試參考題庫附帶答案詳解
- 杭州市主城區(qū)聲環(huán)境功能區(qū)劃分圖
- 新概念英語第二冊1-Lesson29(共127張PPT)課件
- 中考語文十大專題總復(fù)習(xí)資料
- 汽車駕駛員專業(yè)競賽實施方案
評論
0/150
提交評論