Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JRMI规范_Java_Server_Rmi - Fatal编程技术网

Java JRMI规范

Java JRMI规范,java,server,rmi,Java,Server,Rmi,据我所知,java.rmi是一种规范。 当我使用那个API开发时,我如何知道我使用的是java.rmi的什么特定实现 还有一个最大线程数的限制是什么 是否在RMI服务器上启动 您使用JDK提供者的实现。Therm不像JNDI、NIO、JCA等中那样是一个提供者体系结构 RMI规范没有提到对线程的任何限制。我几乎不会将RMI称为“规范”。它是一个非常特定于Java的序列化实现;它是与您正在运行的JRE版本相匹配的任何实现。我建议在使用RMI时不要在客户端和服务器之间随机混合和匹配JRE版本。我也不

据我所知,java.rmi是一种规范。
当我使用那个API开发时,我如何知道我使用的是java.rmi的什么特定实现

还有一个最大线程数的限制是什么
是否在RMI服务器上启动

您使用JDK提供者的实现。Therm不像JNDI、NIO、JCA等中那样是一个提供者体系结构

RMI规范没有提到对线程的任何限制。

我几乎不会将RMI称为“规范”。它是一个非常特定于Java的序列化实现;它是与您正在运行的JRE版本相匹配的任何实现。我建议在使用RMI时不要在客户端和服务器之间随机混合和匹配JRE版本。我也不建议使用旧VM中不存在的外来特性序列化POJO

虽然没有“指定”,但我以前为C#反向设计过一个几乎完整的RMI实现(用于WPF中基于Spring/Hibernate的服务器),但我不知道有谁在现实世界中使用这种非JRE实现。在某些情况下,使用RMI只是为了与J2EE系统通信。但是,如果可能的话,您应该使用一些更合理的东西,比如ProtocolBuffers/Thrift/Avro/Hessian/Parqet等。这些东西具有真正的“规范”,具有版本化的wire协议和适用于多个平台的IDL编译器;在我为RMI这样做的时候,情况绝对不是这样


RMI还有其他问题,我将其归类为安全问题(即:在序列化流中拼写出一个类名,它将调用无参数构造函数来创建该名称的类)。它的设计对于对象图可能变大的情况也不是很好。(特别是,您可以在反序列化过程中使堆栈变得非常大。)

与XML API不同,在XML API中至少有两个众所周知的Java SPI服务提供商,RMI是内置的。通过远程方法调用,您可以自己编写客户机和服务器。一个实例意味着一个端口,一个套接字。没有高调的建筑。你已经说了两次了,没有具体说明。我想知道RMI规范是关于什么的。你所有的反对意见都是关于序列化而不是RMI的,而且它们并不都是准确的。我的观点是正确的。这是有记录的(最近)。当时我不得不做一个C#client,这肯定是与当前VM一起工作时发生的任何事情。它仍然不是一个版本独立于VM的协议,这总比没有好。我有一个来自JDK1.1.8的JRMP规范,该规范于1999年发布。它与新的Java8版本中的规范相同。是的,我知道有一个文档。但当您亲自实际实现它时,您会发现为什么只有Java实现了它。它不是一个真正的规范,就像一个RFC。您在C#中,需要对java.util.Hashtable进行反序列化。可以预期,在机器之间发送代码是合理的,附带的POJO java类似代码等等。C#类可以使用完全不同的方法吗?真正的协议规范列出了不可变结构的明确语法,其版本与运行时无关,等等@Rob请参阅Java RMI规范的协议一章,其中提到Java对象序列化规范。wire协议的指定一直到位级别。这是你编的。