0

我在作为集群一部分的机器上运行我的 rmi 服务器。IP 可能会更改,因此通过此过程进行连接是不可靠的。

直到现在,在工作中的开发盒上,基于 IP 的连接都很好,但是转移到 UAT 我需要更改它,但我不知道该怎么做。

下面我有服务器和客户端类的代码。在这里你可以看到我使用机器 ip 连接。我如何用机器别名替换它?这是可能的还是我感到困惑?

谢谢

private final String address = "111.111.111.111";
private Registry registry;
private int port = 6789;
private static Logger logger = Logger.getLogger(RmiServer.class);

public RmiServer() throws RemoteException {
    try {
        registry = LocateRegistry.createRegistry(port);
        registry.rebind("rmiServer", this);
        logger.info("Server is Ready! Connected on: " + address + ":" + port + " ." +
    } catch (RemoteException e) {
        logger.error("Unable to start the server. Exiting the application.", e);
        System.exit(-1);
    }
}

private final String serverAddress = "111.111.111.111";
private String serverPort = "6789";
private ReceiveMessageInterface rmiServer;
private Registry registry;
private Logger logger = Logger.getLogger(RMIClient.class);

public RMIClient(){
    try {
        registry = LocateRegistry.getRegistry(serverAddress, (new Integer(serverPort)).intValue());
        rmiServer = (ReceiveMessageInterface) (registry.lookup("rmiServer"));

        logger.info("Client started correctly");
    } catch (RemoteException e) {
        logger.error("Remote object exception occured when connecting to server. Exiting application", e);
        System.exit(-1);
    } catch (NotBoundException e) {
        logger.error("Not Bound Exception occured when connecting to server. Exiting application", e);
        System.exit(-1);
    }
}
4

1 回答 1

1
  1. 如果您询问您必须对服务器执行什么操作才能导出其中包含正确 IP 地址的存根,那么这就是该java.rmi.server.hostname属性的用途。在导出任何注册表或远程对象之前,将其设置为服务器 JVM 中所需的主机名或 IP 地址。

  2. 如果您询问如何在服务器更改其 IP 地址后让客户端知道注册表在哪里,那么没有一个公认的解决方案。您可以让服务器定期组播其 IP 地址,或者采用一些sneakernet 方法。

于 2013-04-24T08:47:18.850 回答