簡體   English   中英

CORBA :: 使用 IIOP 獲取客戶端 ORB 地址和端口

[英]CORBA :: Get the client ORB address and port with use of IIOP

我在 CORBA 中有使用 IIOP 協議的應用程序,我正在使用 JDK 6 的 Java IDL 組件,另一個 ORB 實現。

用Java語言實現客戶端和服務器。

JDK ORB 實現中有什么方法可以從服務器 (ORB) 代碼中獲取客戶端 ORB 的主機和端口?

要么

有沒有辦法使用 IIOP 協議,讓客戶端獲得主機和端口?

這是我們正在做的用於識別客戶以跟蹤請求的人

我認為沒有任何便攜的方法可以做到這一點。 也許有針對您的特定 ORB,我不知道。 回想一下,CORBA 非常努力地向應用程序隱藏傳輸細節。 應用程序甚至可能沒有使用 IIOP,因此在任何情況下都無法獲取 TCP 主機和端口信息。

您可能需要考慮向 IDL 添加額外的標識符參數,以便服務器可以識別客戶端。 您還可以考慮讓客戶端調用服務器上的“注冊”函數,服務器會分發一個標識符,所有客戶端必須在后續調用中將其傳遞回服務器。

此標識符可以像字符串或整數一樣簡單,也可以像服務器必須使用公鑰驗證的某種安全令牌一樣復雜。 這一切都取決於您的應用程序的要求。

這取決於具體情況,但有時您需要從 IOR 中提取主機/端口以進行測試、日志記錄和調試。 IOR 包含主機和端口,您只需要從 IOR 表示的字節數組中對其進行解碼即可。 因此,只需以 GNU Classpath 中的 CORBA 規范和 IorParser.java(大量依賴項)為例,如果周末有時間,請自行解碼:)

如果您像我一樣沒有時間,可以使用 ORB 附帶的命令行實用程序:

  1. TAO/ACE ORB 中的 tao_catior
  2. Orbix/Orbacus ORB 中的 iordump
  3. 使用網絡在線工具解析 IOR http://www2.parc.com/istl/projects/ILU/parseIOR/
  4. 尚未發現使用 JDK CORBA 進行解析的可能性。 雖然代碼肯定在內部 sun 包的某個地方。
  5. 雅各布 ORB 中的迪奧。 或者 java jacorb.Orb.util.PrintIOR -i [IOR-string]

對我來說,答案#5 已經足夠好了。 我使用 Jacorb 作為基於 Java 的測試工具。 但是再次 PrintIOR 需要 org.jacorb.orb.ORB 由 org.omg.CORBA.ORB.init() 實例化。 因此,如果您被迫在同一個 JVM 中使用 JDK ORB,這可能會很棘手。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM