Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何决定应该使用哪个物理接口RMI传输层?_Java_Rmi - Fatal编程技术网

Java 如何决定应该使用哪个物理接口RMI传输层?

Java 如何决定应该使用哪个物理接口RMI传输层?,java,rmi,Java,Rmi,当我使用来自客户端的远程引用时,一切都正常。如果我尝试从simu使用此远程引用,则通信失败,因为服务器尝试使用来自eth0的IP。让我烦恼的是,异常会在模拟器上报告。 我想我错过了什么 [编辑] simu提供了以下例外情况: java.rmi.connectionException:创建到eth0_IP的连接时发生异常 嵌套异常为:java.net.SocketException:无法访问网络 您需要设置以告知RMI注册表在其RMI URL中返回的主机名或IP地址 这默认为系统上第一个接口的IP

当我使用来自客户端的远程引用时,一切都正常。如果我尝试从simu使用此远程引用,则通信失败,因为服务器尝试使用来自eth0的IP。让我烦恼的是,异常会在模拟器上报告。 我想我错过了什么

[编辑] simu提供了以下例外情况:

java.rmi.connectionException:创建到
eth0_IP的连接时发生异常

嵌套异常为:java.net.SocketException:无法访问网络

您需要设置以告知RMI注册表在其RMI URL中返回的主机名或IP地址

这默认为系统上第一个接口的IP地址,这解释了为什么它只能通过
eth0
工作

因此,您需要类似以下内容:

String ipAddress = "10.1.2.3"; //IP address of eth1
System.setProperty("java.rmi.server.hostname",ipAddress);


必须在服务器上设置此属性,但我认为客户端会出现问题…@chepseskaf-服务器上的设置会影响发送到客户端的数据。客户端通过
eth1
连接到RMI注册表,询问RMI服务在哪里,并被告知类似
rmi://eth0/yourservice
。您可以使用
java.rmi.server.hostname
属性设置rmi注册表返回的主机名/IP地址。谢谢,它可以正常工作!很抱歉这么慢,我没有以同样的方式看待问题。该设置没有“告诉RMI注册表在其RMI URL中返回哪个主机名或IP地址”。它会影响远程存根本身的内容,当它在导出它所引用的远程对象时第一次构造它时。
String hostname = "myserver"; //hostname that resolves for client and simu
System.setProperty("java.rmi.server.hostname",hostname);