2015-05-19 79 views
0

在我的理解是java.rmi中的規範。
如何知道當我使用該API進行開發時,我使用的是什麼特定的java.rmi實現?JRMI規範

也有對 是一個RMI服務器上啓動的最大線程數限制?

+1

與此相反的XML API,其中至少有兩位著名的Java SPI服務提供商,RMI是內置的。通過遠程方法調用,您可以自己編寫客戶端和服務器。一個實例意味着一個端口,一個套接字。沒有高度震撼的架構。 –

回答

1

您在JDK的提供商使用的執行情況。千卡不是提供商的架構像有在JNDI,NIO,JCA等

RMI規範沒有提到對線程的任何限制。

-2

我很難稱之爲RMI一個「規範」。這是一個頗具Java特色的序列化實現;它的任何實現都與您正在運行的JRE版本相匹配。我建議在RMI使用時不要在客戶端和服務器之間隨機混合和匹配JRE版本。我也不會建議使用老式虛擬機中不存在的特有功能來序列化POJO。雖然它不是「指定的」,但是我之前已經爲C#反向設計了一個幾乎完整的RMI實現(用於WPF的基於Spring/Hibernate的服務器),但我不知道任何使用這種非JRE實現的人在現實世界。在某些情況下,您只能使用RMI與J2EE系統進行通信。但是,如果可能的話,你應該使用像ProtocolBuffers/Thrift/Avro/Hessian/Parqet等更合理的東西。這些版本有一個版本有線協議和IDL編譯器的多個平臺的真正「規格」在我爲RMI做這件事情時,情況絕非如此。

RMI還有其他問題,我會將其歸類爲安全問題(即:在序列化流中拼出一個類名稱,並且它將調用無參數構造函數來創建該類名稱的類)。它的設計對於對象圖可能變大的情況也不是很好。 (特別是,可以使堆棧反序列化期間增長確實很大。)

+0

你說過兩次,沒有指定。我想知道RMI規範的全部內容。你所有的反對意見都是關於序列化而不是RMI,它們並不全是準確的。 – EJP

+0

我站好了。這有點文件記錄(最近有點)。當時我不得不創建一個C#客戶端,這絕對只是與當前虛擬機一起工作而已。它仍然不是一個獨立於虛擬機的版本,這總比沒有好。 – Rob

+0

我從1999年發佈的JDK 1.1.8中獲得了JRMP規範。它與新Java 8版本中的規範相同。 – erickson