java - Java RMI 服务器在哪里监听?

标签 java rmi rmiregistry

我正在阅读一些与 Java RMI 相关的教程(其中之一 here ),我发现自己很难理解 RMI 服务器。

我启动一个 Java 主程序,并创建一个 UnicastRemoteObject,然后将该对象绑定(bind)到 RMI 注册表服务器中(按照教程进行操作)。之后Java Main程序在绑定(bind)后退出。

UnicastRemoteObject 的父类是 RemoteServer,我假设我创建的每个远程对象(也是 UnicastRemoteObject)都是一个 Java 进程(JVM) 监听一个匿名端口。

那么如果我有10个远程对象,那么我就占用了10个端口来服务客户端远程调用?这听起来不太对,但我实在找不到实际建立的RMI服务器在哪里,以及它会占用多少端口供远程客户端调用?

谁能详细解释一下这个东西是如何工作的?

最佳答案

I start a Java Main program, and create a UnicastRemoteObject, after that bind the object in the RMI registry server (follow the tutorial). After that the Java Main program exit after the binding.

不,不会。只要远程对象保持导出状态,它就会保持 Activity 状态。

The parent class of UnicastRemoteObject is RemoteServer, I assume every remote object (which is also UnicastRemoteObject) that I created is a Java process (JVM) that listening on one anonymous port.

没有。它是存在于当前 JVM 内部的一个 Java 对象。不是一个单独的过程。

So if I have 10 remote object, then I have 10 ports occupied to serve the client remote invocation?

没有。除非您指定端口,否则您将获得系统分配的端口。通常,该端口将在您从此 JVM 导出的所有远程对象之间共享。

This doesn't sound right

事实并非如此。

but I can't really find where is the RMI server that actually established and how many port it will occupy for the remote client invocation?

它位于 RMI 实现类的深处。

关于java - Java RMI 服务器在哪里监听?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002737/

相关文章:

java - java中创建对象的不同方式

java - 如何使用 java FIle i/o 替换、删除或更新文件中的行

java - 在与 RMIServer 不同的主机上运行 RMIRegistry

Java RMI - 检查注册表是否存在

java:rmiregistry设置

java - 如何使用 Spring Boot 正确配置 Velocity?

java - Apache POI 是否支持 Excel 函数 CUBEMEMBER?

java - 在客户端使用 RMI 远程对象的正确方法是什么?

java - JBoss RMI 事务

java - 在 RMI 注册表中设置类路径是否必要/重要?