在 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 保留,因此没有关于数字的参数。
我是 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 保留,因此没有关于数字的参数。