CORBA對象生命周期之早期和后期綁定
在伺服對象生命周期事件的定義中,已經說過伺服對象通過CORBA對象的ID依附于CORBA對象。下面會為BOA和POA代的ORB而分別討論CORBA對象I D的概念,然而,伺服對象和CORBA對象之間的綁定的思想還是很重要的。對象適配器必須提供必需的接口,使我們能執行這種綁定。問題在于,是什么觸發了真正的綁定:是某種標準應用程序邏輯還是來到的請求?下面首先介紹早期綁定,然后討論后期綁定,或者說是通過命令的綁定。
1. 早期綁定
早期綁定通常描述的是某種標準應用程序邏輯通過對象適配器來執行綁定的情況。例如,一工廠對象可為創建新對象提供操作。這個操作的實現可創建一新的CORBA對象,并在返回新創建對象的引用之前激活一個伺服對象。因為CORBA對象現在是激活的-即存在對伺服對象的綁定-客戶機現在可使用引用和激發新創建的CORBA對象。
2. 后期綁定
后期綁定意指綁定只能通過命令創建,即是在對象故障發生的情況下。如果在目標服務器的ORB運行時模塊中所請求的目標對象和伺服對象之間不存在綁定,就會發生對象故障,即ORB不能為目標對象找出實現。
在對象故障的情況下, ORB可以要求應用程序提供一個伺服對象,以把這個伺服對象和目標對象綁定。如果應用程序不能完成這個請求, ORB就會引發異常以通知客戶機被請求對象不存在。
創建后期綁定有兩個選擇:綁定只在請求期間被創建,或是綁定可以比請求生存得更久。在第一種情況中,下一個相同對象的請求會導致另一個對象故障,而第二種情況中綁定仍然存在(同時不需要任何動作來凍結伺服對象)。
圖2顯示了早期綁定和后期綁定的關系:基本上,早期綁定意味著應用程序采取主動。后期綁定意味著對象適配器請求應用程序提供一個伺服對象,以使綁定可以創建。這通常是通過伺服對象管理器來完成。伺服對象管理器是一個本地回調對象,由應用程序實現并注冊到ORB,這樣ORB在對象故障的情況下就可以激發它。
![]() |
