Java RMI 连接使用哪个端口?
2022-09-01 16:41:03
我可以知道Java RMI连接使用什么端口吗?
如果要使用 RMI 连接将 Java 客户机应用程序连接到 Java 服务器应用程序,那么我需要在服务器计算机上打开哪个端口,以便客户机应用程序可以连接到它?
我想在服务器计算机中设置防火墙,但我不知道应该打开哪个端口。
我可以知道Java RMI连接使用什么端口吗?
如果要使用 RMI 连接将 Java 客户机应用程序连接到 Java 服务器应用程序,那么我需要在服务器计算机上打开哪个端口,以便客户机应用程序可以连接到它?
我想在服务器计算机中设置防火墙,但我不知道应该打开哪个端口。
到目前为止,所有的答案都是不正确的。注册表通常使用端口 1099,但您可以更改它。但这还不是故事的结局。远程对象也使用端口,而不一定是 1099。
如果在导出时未指定端口,RMI 将使用随机端口。因此,解决方案是在导出时指定端口号。这是一个需要在防火墙中打开的端口(如果有的话)。
在远程对象扩展 的情况下,使用一些非零端口号调用其构造函数。UnicastRemoteObject
super(port)
在它不扩展的情况下,请向 提供一个非零端口号。UnicastRemoteObject
UnicastRemoteObject.exportObject()
这有几个皱纹。
如果您使用的是套接字工厂,则必须具有合理的实现才能使端口共享正常工作,即不仅仅依赖于通过 或 的对象标识。RMIServerSocketFactory
equals()
==
Object.equals()
如果您没有提供服务器套接字工厂,或者您确实提供了一个合理的方法,但不能同时提供两者,则可以对所有远程对象使用相同的非零显式端口号,例如 后跟任意数量的 或 呼叫。equals()
createRegistry(1099)
super(1099)
exportObject(..., 1099)