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