1

问题:如何使我的 RMI 应用程序具有特定的 IP 和端口?这意味着我希望当我的应用程序初始化时它会询问端口和根系统 IP 地址以及应用程序可以独立执行的端口

4

1 回答 1

1

除了向用户询问数据的部分之外,在 RMI 客户端中,这只是Naming.lookup()动态而不是静态地构建查找字符串的问题:例如,而不是

MyRemote mr = (MyRemote)Naming.lookup("rmi://somehost:someport/MyRemote")

你将会拥有

String host; // initialized by dialogue with user
int port;    // initialized by dialogue with user
MyRemote mr = (MyRemote)Naming.lookup("rmi://"+host+":"+port+"/MyRemote")

在 RMI 服务器端,端口号super()在构造远程对象时提供给,如果你扩展UnicastRemoteObject,否则提供给,UnicastRemoteObject.exportObject()如果你不扩展 UnicastRemoteObject。通常你根本不需要指定你自己的主机;一个例外是,如果您位于 NAT 设备或其他形式的端口转发防火墙后面,在这种情况下,您需要在java.rmi.server.hostname导出任何远程对象(包括注册表)之前在服务器 JVM 的属性中指定主机。

于 2013-07-01T00:22:21.793 回答