gpt4 book ai didi

java - 无法与远程服务器上的 RMI 注册表建立连接

转载 作者:行者123 更新时间:2023-12-01 21:47:50 29 4
gpt4 key购买 nike

目前我正在尝试在远程计算机上使用 RMI 启动 java 服务器。服务器似乎已启动,但我无法在客户端上调用其方法。在客户端上,我收到一个异常,如下所示:

Exception in thread "main" java.rmi.ConnectException: Connection refused to host: 10.0.0.6; nested exception is: 
java.net.ConnectException: Operation timed out (Connection timed out)

这是我的 RMI 服务器构造函数:

    private RmiServer(String address, int port) throws RemoteException, SQLException, MalformedURLException {
System.out.println("This address = " + address + ", Port = " + port);
Registry registry;
try {
registry = LocateRegistry.createRegistry(PORT);
} catch (RemoteException e)
{
registry = LocateRegistry.getRegistry(PORT);
}
System.setProperty("java.rmi.server.hostname", address);
try {
registry.bind(REGISTRY_NAME, this);
Naming.bind(address, this);
}
catch (AlreadyBoundException e)
{
registry.rebind(REGISTRY_NAME, this);
Naming.rebind(address, this);
}
...
}

这是我的客户端代码:

    static public void main(String[] args) throws IOException {
try {
Registry registry = LocateRegistry.getRegistry(SERVER_ADDRESS, SERVER_PORT);
rmiServer = (ReceiveMessageInterface) registry.lookup(REGISTRY_NAME);
} catch (RemoteException | NotBoundException e) {
System.err.println(e.getMessage());
isServerOK = false;
}
Scanner reader = new Scanner(new InputStreamReader(System.in));
boolean isAuthenticated = false;
int pin;
String cardNumber;
SessionInfo session = null;
if (isServerOK) {
while (true) {
if (!isAuthenticated) {
System.out.println("Welcome Customer to HDFC Bank ATM : \nPlease enter your card number: ");
cardNumber = reader.next();
System.out.println("Please enter your PIN: ");
pin = reader.nextInt();
String cardHolderName = rmiServer.verifyPIN(cardNumber, pin);
...
}
...
}
...
}
...
}

我用这个字符串启动服务器:

java -cp flyway-core-6.0.8.jar:mssql-jdbc-7.4.1.jre8.jar:mysql-connector-java-8.0.18.jar:. -Djava.security.policy=java.security.AllPermission kmalfa.RmiServer

我的服务器在Linux虚拟机上运行。我使用微软Azure服务。我关闭了客户端和虚拟机上的防火墙。我出于测试目的允许了 Azure 设置中的所有传入连接,但这没有帮助。可能是什么问题?

最佳答案

已解决。

刚刚打电话

System.setProperty("java.rmi.server.hostname", address);

不在RmiServer构造函数中,但在调用它之前,在main的开头

关于java - 无法与远程服务器上的 RMI 注册表建立连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58777913/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com