白季飞龙的个人主页

RMI大杂烩

RMI(Remote Method Invocation),即远程方法调用。是Java官方的RPC实现。

RMI示例:

客户端、服务端的通讯接口

package io.github.baijifeilong.rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface ISayHelloService extends Remote {

    String hello(String name) throws RemoteException;
}

服务端

package io.github.baijifeilong.rmi;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.UnicastRemoteObject;

public class RmiServer {
    public static void main(String[] args) throws RemoteException {
        ISayHelloService sayHelloService = new SayHelloService();
        UnicastRemoteObject.exportObject(sayHelloService, 0);
        LocateRegistry.createRegistry(1099).rebind("SayHello", sayHelloService);
    }


    static class SayHelloService implements ISayHelloService {
        @Override
        public String hello(String name) {
            return "hello, " + name;
        }
    }
}

客户端

package io.github.baijifeilong.rmi;

import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class RmiClient {
    public static void main(String[] args) throws RemoteException, NotBoundException {
        // RMI默认端口1099,不需要显式声明
        Registry registry = LocateRegistry.getRegistry();
        ISayHelloService sayHelloService = (ISayHelloService) registry.lookup("SayHello");
        System.out.println(sayHelloService.hello("word"));
    }
}

客户端输出

hello, word

文章首发: https://baijifeilong.github.io


漫漫路,莫论逍遥;潜心修,只为悟道