我在作为群集一部分的计算机上运行我的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);
}
}
答案 0 :(得分:1)
如果您要询问您必须对服务器执行哪些操作以导出其中包含正确IP地址的存根,那就是java.rmi.server.hostname
属性的用途。在导出任何注册表或远程对象之前,将其设置为服务器JVM中所需的主机名或IP地址。
如果您在服务器更改其IP地址后询问如何让客户端知道注册表的位置,则没有单一的可接受解决方案。您可以让服务器定期组播其IP地址,或采用一些sneakernet方法。