【发布时间】:2017-02-27 04:36:18
【问题描述】:
我正在尝试让我的 RMI 服务跨防火墙工作。我按照this answer 中的说明在端口 1099 上运行 RMI 注册表和我的 RMI 服务,但是,当我执行 netstat 时,我看到在 RMI 客户端和服务器上打开了不同的端口号。
[user@machine] ~ $ netstat -ant | grep 1099
tcp6 0 0 :::1099 :::* LISTEN
tcp6 0 0 10.1.1.1:1099 10.1.1.2:33400 ESTABLISHED
tcp6 0 0 10.1.1.1:1099 10.1.1.1:33378 ESTABLISHED
tcp6 0 0 10.1.1.1:33408 10.1.1.1:1099 ESTABLISHED
tcp6 0 0 10.1.1.1:1099 10.1.1.1:33408 ESTABLISHED
tcp6 0 0 10.1.1.1:46866 10.1.1.2:1099 ESTABLISHED
tcp6 0 0 10.1.1.1:1099 10.1.1.2:33404 ESTABLISHED
tcp6 0 0 10.1.1.1:33378 10.1.1.1:1099 ESTABLISHED
tcp6 0 0 10.1.1.1:46862 10.1.1.2:1099 ESTABLISHED
tcp6 0 0 10.1.1.1:46864 10.1.1.2:1099 ESTABLISHED
tcp6 0 0 10.1.1.1:1099 10.1.1.2:33402 ESTABLISHED
tcp6 0 0 10.1.1.1:46860 10.1.1.2:1099 ESTABLISHED
10.1.1.1 和 10.1.1.2 都是 RMI 服务器和客户端相互通信。
这是我的代码 sn-p:
IRemoteService 存根 = (IRemoteService) UnicastRemoteObject.exportObject(service, 1099);
registry = LocateRegistry.createRegistry(1099);
registry.rebind(IRemoteService.serviceName, stub);
这是预期的吗?为什么我看到端口号如 33400、33378 等?还是我对源端口和目标端口如何工作的理解有误?我希望看到所有连接(注册表查找和远程服务调用)都只到端口 1099。
注意:我还没有在防火墙环境中运行上述程序,只是在我的实验室本地尝试,然后再尝试在防火墙环境中。
【问题讨论】:
标签: java linux rmi firewall netstat