簡體   English   中英

Java RMI IIOP 是否可以通過 Internet 工作?

[英]Does Java RMI IIOP work over internet?

我知道 RMI 在 LAN 外部建立連接方面存在不足。 我想知道 RMI IIOP 是否可以通過 Internet 連接服務器客戶端。 可能嗎? 如果是,有哪些可能的解決方案?

RMI 在 Internet 上運行良好,它是基於 TCP 的。 我個人會使用KryoNet作為 RMI 實現。 它沒有麻煩,而且速度非常快。 序列化機制使用 Kryo,它是最快的通用序列化庫之一。 請注意,防火牆可能存在問題。 但是,您可以輕松地擁有一個偵聽端口 80 的 RMI 服務器。這可以正常工作(除非有大量的數據包偵聽,我猜)。 在 HTTP 上工作的 RMI 服務器也很有趣。 嗯。

是的,但前提是端口在防火牆處打開。 使用 HTTP 而不是 RMI 的優點是它可以很容易地通過代理服務器。

就 Internet 范圍的使用而言,與本機 RMI 協議 JRMP 相比,使用 IIOP 沒有特別的優勢。

IIOP確實使您能夠使用基於非 Java 的代碼調用 Java 對象,因此如果您想支持非 Java 客戶端,您將需要考慮 IIOP 或更多瀏覽器/JavaScript 友好,例如 Z4DE91F0FCB9CD3A0ABDZ16FCB9CD3A0ABB0

如果您不需要支持非 Java 客戶端,那么推薦 IIOP 的並不多。 使用 IIOP,您將失去 JRMP 提供的分布式垃圾收集,因此您必須決定何時不再發布任何 RMI 發布的 object。

使用 JRMP,您只需擔心手動管理綁定到 RMI 注冊表的 RMI 對象。 一旦刪除了對它們的所有引用(本地和遠程),您發布的所有其他對象將自動被垃圾收集。 如果您使用 IIOP,則必須在停止使用它們時手動調用 PortableRemoteObject.unexportObject()。

暫無
暫無

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

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