如何在RMI服务器中使用Machine Alias

时间:2013-04-24 07:22:07

标签: java rmi

我在作为群集一部分的计算机上运行我的rmi服务器。知识产权可能会发生变化,因此通过这一过程进行连接是不可靠的。

直到现在,开发框上的工作有基于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);
    }
}

1 个答案:

答案 0 :(得分:1)

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

  2. 如果您在服务器更改其IP地址后询问如何让客户端知道注册表的位置,则没有单一的可接受解决方案。您可以让服务器定期组播其IP地址,或采用一些sneakernet方法。