当前位置: 首页 > 知识库问答 >
问题:

RMI连接异常

钮安歌
2023-03-14

这是我第一次使用RMI,基本上我设法在我的PC本地运行下面的RMI示例,但不是通过两个独立的Linux机器。

服务器界面:

public interface PowerService extends Remote{
public BigInteger square ( int number )
    throws RemoteException;

public BigInteger power  ( int num1, int num2) 
    throws RemoteException;
}

服务器:

public class PowerServiceServer extends UnicastRemoteObject implements
    PowerService {

public PowerServiceServer() throws RemoteException {
    super();
}

public BigInteger square(int number) throws RemoteException {
    imp .....
    return (bi);
}

public BigInteger power(int num1, int num2) throws RemoteException {
    imp .....
    return bi;
}

public static void main(String[] args) throws Exception {

    PowerServiceServer svr = new PowerServiceServer();
    // ... and bind it with the RMI Registry
    Naming.bind("PowerService", svr);
    System.out.println("Service bound....");
}
}

客户:

public class PowerServiceClient {
public static void main(String args[]) throws Exception {
    // Call registry for PowerService
    PowerService service = (PowerService) Naming.lookup("rmi://" + args[0]
            + "/PowerService");
    DataInputStream din = new DataInputStream(System.in);
    for (;;) {
        System.out.println("1 - Calculate square");
        System.out.println("2 - Calculate power");
        System.out.println("3 - Exit");
        System.out.println();
        System.out.print("Choice : ");

        String line = din.readLine();
        Integer choice = new Integer(line);

        int value = choice.intValue();

        switch (value) {
        case 1:
            // Call remote method
            ....................
            break;
        case 2:
            // Call remote method
            ....................
            break;
        case 3:
            System.exit(0);
        default:
            System.out.println("Invalid option");
            break;
        }
    }
}

客户端接口与服务器接口相同

这是我为了运行rmi示例所做的:

1) 在服务器端,我创建了存根

2) 跑马场

3)运行服务器

4)我将存根从服务器端复制到客户端到同一个包中

5) 运行客户端

运行客户端后,我收到以下错误消息:

线程“main”java中出现异常。马绍尔群岛共和国。ConnectException:拒绝连接到主机:127.0.0.1;嵌套的例外是:java。网ConnectException:连接在sun被拒绝。马绍尔群岛共和国。运输tcp。Tpendpoint。sun上的newSocket(TCPEndpoint.java:601)。马绍尔群岛共和国。运输tcp。tcp频道。在sun上创建连接(TCPChannel.java:198)。马绍尔群岛共和国。运输tcp。tcp频道。sun上的新连接(TCPChannel.java:184)。马绍尔群岛共和国。服务器UnicastRef。在计算时调用(UnicastRef.java:110)。PowerServiceServer_存根。方形(未知来源)

可能是由于防火墙的原因,我无法连接,或者我做错了什么??

谢谢

共有1个答案

董良策
2023-03-14

这就是java解决的问题。马绍尔群岛共和国。服务器主机名 参见RMI常见问题解答中的项目A.1。您需要修复导致它的/etc/hosts配置错误,或者设置系统属性java。马绍尔群岛共和国。服务器导出任何远程对象之前,将服务器JVM中的主机名设置为服务器的正确IP地址。

 类似资料:
  • 问题内容: 我已经为RMI的客户端编写了以下代码。但是得到 代码: 问题答案: 如果要在绑定,重新绑定或查找时获取该注册表,则注册表不会运行。如果让它进行远程调用,请参阅Javadoc随附的RMI FAQ 中的项目A.1 ,如果您正在运行Linux,还请检查/ etc / hosts文件是否将127.0.0.1映射到localhost和您的真实IP地址。到您的真实主机名- 在某些Linux发行版中

  • 我决定写RMI(从书中)也从书中获取代码。我用rmic创建了存根,并启动了rmiregistry,但当我决定编写java启动服务器时,我遇到了一个问题,实际上我面临的问题是:java-classpath D:\RMI AddServer Exception:java。马绍尔群岛共和国。ServerException:服务器线程中发生RemoteException;唯一的例外是:java。马绍尔群岛

  • 我正在尝试连接到MBean服务器。我需要编写JMX客户端应用程序。这是用于客户端应用程序的代码。但我有一个例外 检索RMIServer存根失败:javax.naming.ServiceUnavailableException[根异常为java.rmi.ConnectException:连接拒绝主机:localhost;嵌套异常为: 谁能帮我把这个修好。 我使用以下参数运行了这段代码。 dcom.s

  • 代码片段如下所示: 如果有人有决议,请帮忙?

  • 问题内容: 我可以知道Java RMI连接使用哪个端口吗? 如果要使用RMI连接将Java客户端应用程序连接到Java服务器应用程序,我需要在服务器计算机上打开哪个端口,以便客户端应用程序可以连接到该端口? 我想在服务器计算机上设置防火墙,但是我不知道应该打开哪个端口。 问题答案: RMI通常无法在防火墙上工作,因为它使用不可预测的端口(它始于1099,然后再使用随机端口运行)。 在这些情况下,通

  • 以下错误在连接 sqlserver(java) 时抛出。我不知道这个问题的根本原因。 如果有人遇到这个问题,请让我们知道,如何解决这个问题?