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();
            }
        }
    }
  • 相关阅读:
    线段树专辑—— pku 1436 Horizontally Visible Segments
    线段树专辑——pku 3667 Hotel
    线段树专辑——hdu 1540 Tunnel Warfare
    线段树专辑—— hdu 1828 Picture
    线段树专辑—— hdu 1542 Atlantis
    线段树专辑 —— pku 2482 Stars in Your Window
    线段树专辑 —— pku 3225 Help with Intervals
    线段树专辑—— hdu 1255 覆盖的面积
    线段树专辑—— hdu 3016 Man Down
    Ajax跨域访问
  • 原文地址:https://www.cnblogs.com/javaweb2/p/rmi.html
Copyright © 2011-2022 走看看