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

时间:2015-10-15 07:16:59

标签: java 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)

在我的情况下,我的应用程序的端口号是固定的。

1 个答案:

答案 0 :(得分:0)

  

如何重复使用同一端口一次导出多个远程对象

默认情况下会发生这种情况。从同一个JVM导出的所有远程对象

  • 不指定端口号,或指定端口0和
  • 不指定服务器或客户端套接字工厂,或指定由equals()
  • 确定的相同套接字工厂

将在同一端口上导出。

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