📜  java rmi 示例客户端服务器 - Java (1)

📅  最后修改于: 2023-12-03 15:31:31.882000             🧑  作者: Mango

Java RMI 示例客户端服务器

Java RMI(Remote Method Invocation)是Java提供的远程方法调用技术,允许在不同的Java虚拟机(JVM)上执行程序,使得分布式应用程序的开发变得容易。

本文将介绍如何使用Java RMI构建一个示例客户端服务器。

构建服务器

首先,我们需要创建一个RMI服务接口。在这个示例中,我们将创建一个名为Hello的接口,其中包含一个sayHello方法。代码如下:

public interface Hello extends Remote {
    String sayHello() throws RemoteException;
}

接下来,我们需要实现这个接口。我们创建了一个名为HelloImpl的类,并实现了Hello接口中的sayHello方法。代码如下:

public class HelloImpl extends UnicastRemoteObject implements Hello {
    public HelloImpl() throws RemoteException {
        super();
    }

    public String sayHello() throws RemoteException {
        return "Hello, world!";
    }
}

这里我们使用了UnicastRemoteObject类来实现Hello接口,它帮助我们实现了Remote接口和一些远程对象所需的系统功能。

最后,我们需要在服务器上注册这个RMI服务。我们创建一个名为Server的类,在其中注册并启动RMI服务。代码如下:

public class Server {
    public static void main(String[] args) {
        try {
            LocateRegistry.createRegistry(1099);
            HelloImpl hello = new HelloImpl();
            Naming.rebind("//localhost/Hello", hello);
            System.out.println("Server ready.");
        } catch (Exception e) {
            System.err.println("Server exception: " + e.toString());
            e.printStackTrace();
        }
    }
}

我们在这个类的main方法中,首先创建了一个RMI注册表,接着创建一个HelloImpl对象,并在RMI注册表中将这个对象绑定到了一个名为Hello的URL上。

现在我们的服务器已经准备好了。

构建客户端

在客户端,我们需要远程调用我们在服务器上注册的Hello服务。代码如下:

public class Client {
    public static void main(String[] args) {
        try {
            Hello obj = (Hello) Naming.lookup("//localhost/Hello");
            String message = obj.sayHello();
            System.out.println(message);
        } catch (Exception e) {
            System.err.println("Client exception: " + e.toString());
            e.printStackTrace();
        }
    }
}

在这个类中,我们使用了Naming类的lookup方法来查找在服务器上注册的Hello服务。接着,我们调用了sayHello方法并将结果输出到控制台。

现在,我们已经完成了一个简单的Java RMI示例客户端服务器。在本示例中,我们创建了一个Hello服务,并在服务器上注册和启动它,接着在客户端中远程调用Hello服务,并将结果输出到控制台。

总结

Java RMI提供了一种简单的方法来实现分布式应用程序,允许在不同的JVM上执行程序。本文介绍了如何使用Java RMI构建一个示例客户端服务器,并提供了源代码和解释。请大家根据自己的需求来进行更具体的操作。