在 RMI 中导出远程数据和套接字重用

Exporting remote data and Socket Reuse in RMI

我是 RMI 的新手,所以如果我的问题很愚蠢,请原谅我。 我正在尝试以并发方式导出数据。如何重用同一个端口一次导出多个远程对象。 任何人都可以通过示例指导我实现这一目标吗?

我尝试这样做,所以第一个对象被导出但在第二次导出时出现以下异常。

java.rmi.server.ExportException: Port already in use: 55580; nested exception is: java.net.BindException: Address already in use: JVM_Bind

我使用了以下代码片段

UnicastRemoteObject.exportObject(remoteObj, 55580);

如果我跳过端口号,RMI 将选择任何端口号。像下面一样

UnicastRemoteObject.exportObject(remoteObj)

在我的例子中,我的应用程序的端口号是固定的。

How can I reuse the same port for exporting more than one remote object at once

这是默认情况。

从同一 JVM 导出的所有远程对象
  • 不指定端口号,或指定端口零,并且
  • 不要指定服务器或客户端套接字工厂,或指定由 equals()
  • 确定的相同 套接字工厂

将在同一端口导出。

我得出结论,您必须从两个 JVM 导出远程对象。没有必要这样做。把它们合二为一。如果您也从那里启动注册表,使用 LocateRegistry.createRegistry(),您可以使用注册表端口 1099 进行所有操作,并且它已经在 IANA 保留,因此没有关于数字的参数。