kwc*_*kwc 18 java connection firewall rmi
我可以知道Java RMI连接使用了哪个端口?
如果我想使用RMI连接将Java客户端应用程序连接到Java服务器应用程序,我需要在服务器计算机上打开哪个端口,以便客户端应用程序可以连接到它?
我想在服务器机器中设置防火墙,但我不知道应该打开哪个端口.
use*_*421 12
到目前为止所有答案都是不正确的.注册表通常使用端口1099,但您可以更改它.但这不是故事的结局.远程对象也使用端口,不一定是1099.
如果在导出时未指定端口,则RMI使用随机端口.因此,解决方案是在导出时指定端口号.这是一个需要在防火墙中打开的端口,如果有的话.
在远程对象扩展的情况下UnicastRemoteObject,让其构造函数调用super(port)一些非零端口号.
在不扩展的情况下UnicastRemoteObject,提供非零端口号UnicastRemoteObject.exportObject().
这有几个皱纹.
如果您不使用套接字工厂,并且在导出第一个远程对象时提供非零端口号,则RMI将自动与后续导出的远程对象共享该端口,而不指定端口号或指定零.第一个远程对象包括使用LocateRegistry.createRegistry().So 创建的注册表.如果您创建一个Registryon端口1099,从该JVM导出的所有其他对象可以共享端口1099.
如果您正在使用套接字工厂并且您RMIServerSocketFactory有合理的实现equals(),则同样适用于上述情况.
在这两种情况下,您可以为所有远程对象使用相同的非零显式端口号,例如createRegistry(1099)后跟任意数量的super(1099)或exportObject(..., 1099)调用.
Kai*_*nad 10
在RMI中,关于端口,涉及两种不同的机制:
1)默认情况下,RMI注册表使用端口1099
2)客户端和服务器(存根,远程对象)通过随机端口进行通信,除非在导出远程对象时指定了固定端口.通信是通过套接字工厂启动的,它使用0作为起始端口,这意味着"使用0到65535之间可用的任何端口".
| 归档时间: |
|
| 查看次数: |
104591 次 |
| 最近记录: |