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();
            }
        }
    }
  • 相关阅读:
    ios系统滚动穿透
    移动h5 开发遇到ios系统的各种问题汇总
    移动端选择时间时软键盘弹出问题
    ios系统设置-webkit-overflow-scrolling: touch导致z-index 失效 (弹窗层级设置无效)- 替代方案
    npm i 报错 npmERR! code Z_BUF_ERROR errno -5 // 后继 chromedriver.zip 相关问题报错解决
    mysql、orcale、sql server的区别
    jsp中的select选择
    sql面试
    java面试题
    struts2总结
  • 原文地址:https://www.cnblogs.com/javaweb2/p/rmi.html
Copyright © 2011-2022 走看看