Tom*_*m G 5 java networking rmi
我希望能够将我的应用程序使用的端口限制为一些尽可能小的已知集。该应用程序使用 Java RMI 与远程服务器进行通信。注册表在端口 1099 上导出,这是标准端口。然而,用于导出各种远程对象的端口似乎并不总是一致的,尽管它确实在短时间内在多个连接中保持不变。我未受过教育的猜测是在幕后进行了某种服务器套接字缓存,从而导致了这种情况。
我希望能够确保连接始终发生在几个众所周知的端口上,以便安装客户端应用程序的用户必须在他们的防火墙中打开尽可能少的端口。似乎我可以通过将 RMISocketFactory 更改为自定义实现并覆盖该createServerSocket方法以始终使用已知端口来做到这一点。然而,这引发了几个问题:
createRegistry调用绑定了。它不会阻止多个同时连接吗?
不。
是否可以将这些远程对象绑定在与注册表相同的端口上?我的直觉说不,因为端口已经被
createRegistry()调用绑定了。
是的,只要您在同一个 JVM 中通过 启动注册表LocateRegistry.createRegistry(),并且只要涉及的任何服务器套接字工厂都是equal().
还有其他我不知道的含义吗?
没有任何影响。RMI 在具有 null 或相等服务器套接字工厂的远程对象之间进行端口共享,而 TCP 在同一端口的多个连接之间进行端口共享。
| 归档时间: |
|
| 查看次数: |
2099 次 |
| 最近记录: |