2015-05-19 287 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