歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

ORBit FAQ

  1. CORBA 問題 回答 a.) 一個客戶是怎樣連接到一個服務器? 這是眾所周知的關於 CORBA 的問題(更精確的說法是在任何分布式對象系統中均存在這個問題)。它通常以術語"bootstrapping"(引導)描述。一般的說, 可以從名字服務( Name Service)(或者 Trading Object Service) 獲得對象的引用, 但是名字服務自身也是對象(有賴於 CORBA 清晰的設計)。既然名字服務自身也是對象,你如何得到對它的引用呢? 一個客戶的標准的解決方法是,通過交換可互操作對象引用(Interoperable Object Reference 縮寫是 IOR)找到對一個服務器的第一個對象引用。服務器進程通過使用 object_to_string()方法產生一個已創建對象的 IOR。生成的字符串,也叫字符串化對象引用,可通過任何媒介傳輸,象 email、HTTP、NFS、文件系統,甚至是在浮瓶中的便條 ;-) 。客戶進程從媒介中讀取 IOR 並通過string_to_object()把它轉換回原來的二進制表示。在此之後客戶擁有了一個對服務器的有效的引用,這樣就可以用通常的方式調用(invoke 也譯為激發)方法。 直到現在,各種不同的 ORB 未能提出解決這個重要的引導問題的標准方式。一個例子是 Visibroker 位置服務。 ORB 通過一個專有的_bind()方法在一個中心的服務中登記每個對象。通過網絡廣播來發現服務。這種機制的缺點是有關對象的信息存儲在一個中心表中 。這個表需要在規律性的基礎上的更改。這是必須的,因為惡意的對象不徹底的去除登記。如果廣播的間隔太短,更改將導致在網絡上有大量的噪音 。如果廣播的間隔太長,表中將包括僵屍對象。這種專有的解決方案在許多主要的 CORBA 實現中存在。 理想的方法是 resolve_initial_references(),它被用於找到一個命名服務的引用。這樣 ORB 不要求開發者寫一些額外的代碼就可以讀取 IOR。 在過去每個 ORB 用自己的命令行參數把 IOR 到 ORB 的核心。(ORBit: ORBNamingIOR=IOR:.....)。 可互操作命名服務 (Interoperable Naming Service 縮寫為 INS) 定義(ptc/99-12-03) 引進了標准的命令行參數 -ORBInitRef 來完成這項工作。 yourclientapp -ORBInitRef NameService=IOR_of_naming_service 唯一的竅門是把 argc 和 argv 傳遞給 ORB 的 ORB_init()調用,這樣 ORB 的核心就能展開有關參數,下面的調用之後 nsobj = resolve_initial_references("NameService"); 返回想要的對象引用。INS 規范定義是除 IOR 之外的另一個可被人閱讀的對象引用。 corbaloc:iiop://IIOPVersion@hostname:port/ObjectKey corbaloc 通過提供可被人閱讀的地址,給出了一個客戶指向一個服務器對象的另一種可能的方式。提出另一個的方案是 corbaname,它查閱在主機上的命名服務,用 hostname 指定。 corbaname://hostname#a/b/obj a/b/obj 指定一個名字,例如一個 NameComponents 的序列, 它用於解析一個對象引用。這種機制將極大的增進整個引導過程並最終解決問題,這在過去曾經是最鬧心的重要問題。可被人閱讀的對象引用 corbaloc 也有一些毛病。他們認為 INS 規范減輕了擁有晦澀的 IOR 的事實。指定協議的細節,象端口號或協議版本號,在用於傳輸的協議被交換時將導致引用變得無效。對象的 URL 必須被擴展來支持新協議的信息,而 IOR 是一個數字的序列,永遠保持不變。 ORBit 的 CVS HEAD 版本部分的實現了 INS 規范(參見 NameService)。 Michi Henning 對這個問題的更詳細的描述在 here。 b.) 我如何在 IDL 中指定缺省的參數? IDL 不允許指定缺省參數。有兩個主要原因。首先, IDL 對所有的可得到的 COBRA 映射的語言提出最小的一般性限制。許多語言不支持缺省參數的概念,在映射時支持這個特征時就有困難。 其次,缺省的參數不是真正必須的。 一個接口的設計者可以輕易的把這樣的功能分割成兩個或更多的獨立的方法(注意:重載也由於同樣的原因而不被支持,所以方法必須有不同的名字)。 c.) 我如何得到 CORBA 中的客戶/服務器對象的IP地址? IP 地址(包括端口號或其他任何協議相關的特征)隱藏在 IOR (Interoperable Object Reference)中。這種不透明的理由是 CORBA 在對象實例間可以使用任何協議用於傳輸。GIOP (General Inter ORB Protocol,通用 ORB 間協議)不依賴於任何特定網絡協議 。IIOP (Internet Inter ORB Protocol,Internet ORB 間協議)把 GIOP 轉換到 TCP/IP。 IIOP 支持不是 ORB 的強制性的特征,但是因為 Internet,它對於每個 ORB 都是必須實現的。 如果我們開始依賴於當前的一個特定協議,原始的打算就被削弱了,致使對象引用在當前有效將來無效。 (參見 TAO (The ACE ORB, ACE - Adaptive Communication Environment) 一個支持可插拔協議的 ORB) Back to top -------------------------------------------------------------------------------- 2. ORBit


問題 回答 a.) 我如何安裝某一版本的 ORBit 而不影響 GNOME桌面? 用以下命令配置軟件包: ./configure --prefix=~/orbit_test_dir --exec-prefix=~/orbit_test_dir 這裡的 orbit_test_dir 是一個任意的子目錄。接著調用 make 和 make install, 他們把 ORBit 復制到指定目錄。最後你只需要調整你的 PATH 和 LD_LIBRARY_PATH 環境變量,即分別的增加 ~/orbit_test_dir/bin 到 PATH 和 ~/orbit_test_dir/lib 到 LD_LIBRARY_PATH。 b.) 我不能連接到我的遠程對象? GNOME security discussion 導致在缺省時禁止在IP服務器套接口上的IIOP(例如:端口)。使用 UNIX 域套接口或用進程間通信的共享內存來替代。 禁止在網絡上的通信只用於防止系統被拒絕服務攻擊。如果你打算在網絡上使用 ORBit就需要再次允許它。 設置可以在 /etc/orbitrc (系統范圍設置), 在 ~/.orbitrc (用戶的設置), 或對每個應用程序給 ORB 傳遞一個參數。在前兩個方式中你需要把 -ORBIIOPIPv4=1 放入某個 orbitrc 文件中。 控制對每個應用程序的設置通過為你的客戶/服務器應用程序在命令行提供 -ORBIIOPIPv4=1 完成,並要傳遞 argc 和 argv 參數到 CORBA_ORB_init() 調用 (缺省處理)。 你可以用命令檢查設置: netstat -ao grep LISTEN。 不應該有任何 ORBit 相關的套接口處於被動打開(監聽)的模式 (這樣的一行: "unix 0 [ ACC ] STREAM LISTENING XXXX /tmp/orbit-USER/orb-YYYYYYYYYYYYYYYY" 不應出現) c.) 我在那裡能得到 ORBit 的 CVS HEAD 版本? gnome developer 站點描述了如何使用 anonymous CVS Access。登錄之後你需要鍵入 "cvs -z3 co ORBit", "ORBit" 是模塊的名字。 d.)為什麼在 CVS 版本和 GNOME 軟件包之間有區別? TheGNOME 版本 1.2 的 Roadmap 要求 ORBit 二進制和源代碼相容。所以在 ORBit 軟件包上的更改在不違反這些要求的情況下是可以接受的。穩定的分支是 orbit-stable-0-5,新的特征被增加到 CVS HEAD。 e.) CORBA_ORB_init() 支持那些參數? CORBA 參數 (INS/Core spec 定義; 只在 ORBit 的 CVS HEAD 版本中能得到 ) -ORBid 用於選擇所使用的 ORB 的標識符 (ORBit 穩定版和 ORBit HEAD 版只支持"orbit-local-orb"; ORBit-mt 版必須使用 "orbit-local-mt-orb")。 -ORBInitRef ObjectId= 初始的引用。參見 INS/CORBA2.4 spec 來得到進一步的信息。 -ORBDefaultInitRef 初始的引用前綴。參見 INS/CORBA2.4 spec 來得到進一步的信息。 ORBit 指定的參數(在 CVS HEAD 和 ORBit-stable-0-5 分支中可得到): -ORBImplRepoIOR= 實現倉庫的 IOR;應該被上面的標准參數所取代。 -ORBIfaceRepoIOR= 接口倉庫的 IOR;應該被上面的標准參數所取代。 -ORBNamingIOR= 命名服務的 IOR;應該被上面的標准參數所取代。 -ORBDebugLevel=warningmessageinfodebugall 顯示的調試信息的總量。等級 "warning", "message", "info", "debug" 可以組合使用,":"是分隔符。 "all" 用來選擇所有信息。 -ORBDebugModules=ORBCDRIIOPTCIR 顯示調試信息的模塊。 -ORBIIOPUSock=01 禁止/允許 UNIX 域套接口。 -ORBIIOPIPv4=01 禁止/允許 IPv4 服務器套接口。 -ORBIPv4Port=#port 用於 IIOP 連接的被動打開的端口號,持久對象的引用需要這個參數(PortableServer_PERSISTENT 策略)。 -ORBIIOPIPv6=01 禁止/允許 IPv6 套接口。 f.) 何時、何人發起了本計劃? 計劃由 Elliot Lee 和 Dick Porter 在1998年2月發起。 Back to top -------------------------------------------------------------------------------- 3. 幫助 問題 回答 a.) 是否有郵件列表 HOWTO? 郵件列表 demon 提供一個關於如何使用的簡短描述. 發送主題是"help"的 e-mail 到 mailto:[email protected]?subject=help&body=Remove NOSPAM from address ! 。

b.) 我如何訂閱郵件列表? 到 mail.gnome.org/mailman/listinfo/orbit-list/. c.) 我如何從訂閱的郵件列表中退出? 到 mail.gnome.org/mailman/listinfo/orbit-list/. d.) 我如何向郵件列表發eMail? 發送 e-mail 到 mailto:[email protected]?body=Remove NOSPAM from address !. e.) 是否有郵件列表的檔案? 在 mail.gnome.org/archives/orbit-list/能得到可查找的檔案,但只包括2000年8月以前的。 可得到用於下在檔案包: orbit-list-arch



e.) 是否有郵件列表的檔案? 在 mail.gnome.org/archives/orbit-list/能得到可查找的檔案,但只包括2000年8月以前的。 可得到用於下在檔案包: orbit-list-arch



Copyright © Linux教程網 All Rights Reserved