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();
            }
        }
    }
  • 相关阅读:
    [Hibernate]
    asc.desc
    Could not obtain connection metadata
    java枚举类Enum方法简介(valueof,value,ordinal)
    maven3 手动安装本地jar到仓库
    maven命令大全
    如何正确遍历删除List中的元素,你会吗?
    Hibernate的session.createSQLQuery的几种查询方式
    Linux-github 搭建静态博客
    我所写的CNN框架 VS caffe
  • 原文地址:https://www.cnblogs.com/javaweb2/p/rmi.html
Copyright © 2011-2022 走看看