我知道我的RMI应用程序正常运行 - 当服务器位于localhost和局域网内部时它工作正常但是当连接到外部RMI服务器时它在尝试进行存根调用时失败
因此服务器绑定到localhost(内部IP - 192.168.1.73),但客户端指定外部IP(45.4.234.56) - 然后将其转发到内部服务器。你是如何解决这个问题的?
感谢
答案 0 :(得分:2)
“最简单”的方法是让您的网络管理员将防火墙上特定端口的IP转发添加到您的服务器。
假设这不是一个选项(可能不是),那么RMI支持通过HTTP进行隧道传输。性能很差,但它更适合防火墙。
http://java.sun.com/javase/6/docs/technotes/guides/rmi/faq.html#firewallOut
这种陈旧的方法很受欢迎 它几乎不需要设置,并且有效 在防火墙环境中相当不错 它允许你处理HTTP 通过代理,但不允许定期 出站TCP连接。
如果Java RMI无法正常(或 SOCKS)与预期的连接 服务器,它注意到HTTP 代理服务器已配置,它将 尝试隧道Java RMI请求 通过该代理服务器,一个在 时间。