zoukankan      html  css  js  c++  java
  • rmi远程方法调用

    服务端

    1.接口

    import java.rmi.Remote;
    import java.rmi.RemoteException;
    
    public interface Fib extends Remote {
    
        /**
         * 定义远程方法
         * @param n
         * @return
         * @throws RemoteException
         */
        public int getFib(int n) throws RemoteException;
        
        public void getFib() throws RemoteException;
    }

    2.接口实现

    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    
    public class FibImp extends UnicastRemoteObject implements Fib {
    
        private static final long serialVersionUID = 1L;
    
        protected FibImp() throws RemoteException {
            super();
        }
    
        @Override
        public int getFib(int n) throws RemoteException {
            return n+1;
        }
    
        @Override
        public void getFib() throws RemoteException {
            System.out.println("FibImp.getFib()");
        }
    
    }

    3.服务注册

    import java.net.MalformedURLException;
    import java.rmi.AlreadyBoundException;
    import java.rmi.Naming;
    import java.rmi.RemoteException;
    import java.rmi.registry.LocateRegistry;
    
    public class FibonacciServer {
    
        public static void main(String[] args) {
            
            try {
                LocateRegistry.createRegistry(8804);
                
                Fib fib=new FibImp();
                try {
                    Naming.bind("//localhost:8804/SAMPLE-SERVER", fib);
                    System.out.println("fib server ready"); 
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (AlreadyBoundException e) {
                    e.printStackTrace();
                }
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }
    }

    客户端调用

    1.客户端接口

    import java.rmi.Remote;
    import java.rmi.RemoteException;
    
    public interface Fib extends Remote {
    
        /**
         * 定义远程方法
         * @param n
         * @return
         * @throws RemoteException
         */
        public int getFib(int n) throws RemoteException;
        
        public void getFib() throws RemoteException;
    }

    2.客户端实现

    import java.net.MalformedURLException;
    import java.rmi.Naming;
    import java.rmi.NotBoundException;
    import java.rmi.RemoteException;
    
    public class FibClient {
    
        public static void main(String[] args) {
            String url = "//localhost:8804/SAMPLE-SERVER";  
            try {
                Fib fib=(Fib) Naming.lookup(url);
    //            for(int i=0;i<100;i++){
    //                System.out.println(fib.getFib(i));;
    //            }
            System.out.println(fib);
                fib.getFib();
            
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (RemoteException e) {
                e.printStackTrace();
            } catch (NotBoundException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    OI无关 透彻随笔
    置顶帖(传送门)/to 学弟 一个菜鸡的故事
    洛谷P1494 小Z的袜子 莫队
    关于 对拍 的一些认识
    关于 带权二分/wqs二分 的一些认识
    关于 KDtree 的一些认识
    关于 网络流 的一些认识
    省选 考前模板
    关于 多项式 的一些认识/多项式入门
    小球与盒子 的奇妙关系
  • 原文地址:https://www.cnblogs.com/javaweb2/p/rmi.html
Copyright © 2011-2022 走看看