rmi客户端和服务端开发实例
时间: 2023-07-24 18:09:10 浏览: 182
RMI(Remote Method Invocation) 是 Java 中的一种远程方法调用机制,它允许在分布式系统中通过网络访问远程对象,使得程序员可以像调用本地对象一样调用远程对象的方法。下面我将为您提供一个简单的 RMI 客户端和服务端开发实例。
1. 编写服务端代码
首先,我们需要编写一个服务端 Java 类,该类需要实现一个远程接口。在该接口中,我们定义了一个 `getMessage` 方法,用于返回一个字符串信息。
```java
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Message extends Remote {
public String getMessage() throws RemoteException;
}
```
接着,在服务端代码中,我们需要实现这个接口,提供相应的实现逻辑。在这个例子中,我们简单地返回了一个字符串信息。
```java
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class MessageImpl extends UnicastRemoteObject implements Message {
public MessageImpl() throws RemoteException {
super();
}
public String getMessage() throws RemoteException {
return "Hello, RMI!";
}
}
```
2. 启动 RMI 服务
在服务端代码中,我们需要启动一个 RMI 服务,使得客户端可以通过网络访问到远程对象。在这个例子中,我们使用 `LocateRegistry.createRegistry` 方法创建了一个 RMI 注册表,并在该注册表中绑定了一个名为 "Message" 的远程对象。
```java
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Server {
public static void main(String args[]) {
try {
MessageImpl obj = new MessageImpl();
Registry registry = LocateRegistry.createRegistry(1099);
registry.rebind("Message", obj);
System.out.println("Server started.");
} catch (Exception e) {
System.out.println("Server exception: " + e.getMessage());
e.printStackTrace();
}
}
}
```
3. 编写客户端代码
在客户端代码中,我们需要通过 RMI 注册表查找远程对象,并调用其方法。在这个例子中,我们查找了名为 "Message" 的远程对象,并调用了其 `getMessage` 方法。
```java
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
public static void main(String args[]) {
try {
Registry registry = LocateRegistry.getRegistry("localhost");
Message stub = (Message) registry.lookup("Message");
String response = stub.getMessage();
System.out.println("Response: " + response);
} catch (Exception e) {
System.out.println("Client exception: " + e.getMessage());
e.printStackTrace();
}
}
}
```
4. 运行程序
最后,我们需要在命令行中依次运行服务端程序和客户端程序,以启动 RMI 服务并访问远程对象。
```
# 启动服务端
$ java Server
# 启动客户端
$ java Client
```
输出结果为:
```
Server started.
Response: Hello, RMI!
```
以上就是一个简单的 RMI 客户端和服务端开发实例。
阅读全文