rmi

common包
IHelloService
public interface IHelloService extends Remote {
    String sayHello(User user) throws RemoteException;
}

  

User
public class User implements Serializable,Cloneable{

    public User(String name , int age){
        this.name=name;
        this.age=age;
    }

    String  name ;

    int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Server

  

HelloServiceImpl
public class HelloServiceImpl extends UnicastRemoteObject implements IHelloService {

    public HelloServiceImpl() throws RemoteException {
    }

    @Override
    public String sayHello(User user) throws RemoteException {
//        MyLog.info("this is server, say Hello to :"+ user.getName());
        return "success";
    }

}

  

RMIServer
public class RMIServer {
    public static void main(String []args) throws     RemoteException {
        IHelloService helloService=new HelloServiceImpl();
//        IHelloService helloService1=(IHelloService) UnicastRemoteObject.exportObject(helloService,0);
        // Bind the remote object's stub in the registry
//        StaticRmiSocketFactory regFac = new StaticRmiSocketFactory("172.16.51.214", 2002);
        Registry registry = LocateRegistry.createRegistry(2002 );
        registry.rebind("helloService", helloService);
        MyLog.info("server is ready");
    }

}

Client

  

RMIClient
public class RMIClient {

    public static void main(String[] args) throws RemoteException, NotBoundException, MalformedURLException {

        User user = new User("JackMa", 55);

        int max = Runtime.getRuntime().availableProcessors() *2 ;
        for (int k = 0; k < max; k++) {
            new Thread(() -> {
                Registry registry = null;
                try {
                    registry = LocateRegistry.getRegistry("172.16.51.214", 2002);
                    IHelloService helloService = (IHelloService) registry.lookup("helloService");
                    int count = 1000000;
                    MyLog.info("start : " + count);
                    for (int i = 0; i < count; i++) {
                        try {
                            helloService.sayHello(user);
                        } catch (RemoteException e) {
                            e.printStackTrace();
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                MyLog.info("end");
            }).start();
        }


    }

}

  

posted @ 2023-02-15 17:08  higsan  阅读(60)  评论(0编辑  收藏  举报