Java RMI实现远程对象访问
时间: 2024-09-11 21:05:33 浏览: 24
Java RMI(Remote Method Invocation)允许开发者在Java应用程序之间创建可跨越网络的远程对象,以实现分布式计算。以下是一个简单的步骤概述:
1. **定义接口**[^2]:
开发者首先定义一个接口(`MyRemoteInterface.java`),这个接口将在远程端实现并暴露给客户端。
```java
public interface MyRemoteInterface {
String echo(String message);
}
```
2. **实现接口**:
在服务器端,实现这个接口并注册到RMI registry(默认端口1099):
```java
Server server = UnicastRemoteObject.exportObject(new MyServiceImpl(), 0); // 注册服务
Naming.bind("rmi://localhost/myService", server); // 在registry中绑定服务名
```
这里,`MyServiceImpl`是接口`MyRemoteInterface`的实际实现。
3. **启动服务器**[^1]:
启动RMI服务器,通常会监听指定端口并等待客户端连接。
4. **客户端调用**:
客户端通过`Naming.lookup()`找到服务器地址,并使用反射调用远程方法:
```java
try (Registry registry = LocateRegistry.getRegistry("localhost", 1099);
MyRemoteInterface service = (MyRemoteInterface) Naming.lookup("rmi://localhost/myService")) {
String response = service.echo("Hello from client");
System.out.println(response);
}
```
客户端向服务器发送请求(如echo "Hello"),服务器接收到请求后返回响应。
注意,为了安全起见,在实际生产环境中,应该限制RMI服务器的访问,仅允许来自信任源的客户端连接,并使用安全措施保护序列化数据,防止远程代码执行漏洞(CVE-2018-11774)。