• RMI远程服务调用


    数据库:info.sql

    /*
    Navicat MySQL Data Transfer
    
    Source Server         : yuanzhen
    Source Server Version : 50713
    Source Host           : 192.168.1.6:3306
    Source Database       : serialnumber
    
    Target Server Type    : MYSQL
    Target Server Version : 50713
    File Encoding         : 65001
    
    Date: 2016-08-16 09:38:17
    */
    
    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for info
    -- ----------------------------
    DROP TABLE IF EXISTS `info`;
    CREATE TABLE `info` (
      `name` varchar(255) DEFAULT NULL,
      `email` varchar(255) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of info
    -- ----------------------------
    INSERT INTO `info` VALUES ('Tom', '4564@foxmail.com');
    INSERT INTO `info` VALUES ('John', 'You@163.com');
    INSERT INTO `info` VALUES ('Harry', 'harry@qq.com');
    View Code

    Bank.java

    import java.rmi.*;  
    import java.util.*;  
    interface Bank extends Remote{  
    public List<Customer> getCustomers()throws RemoteException;  
    }  
    View Code

    BankImpl.java

    import java.rmi.*;  
    import java.rmi.server.*;  
    import java.sql.*;  
    import java.util.*;  
    class BankImpl extends UnicastRemoteObject implements Bank{  
        BankImpl()throws RemoteException{}  
        
        public static void main (String[] args)throws RemoteException{
            List<Customer> list=new BankImpl().getCustomers();
            for(Customer customer:list){
                System.out.println(customer);
            }
            return;
        }    
        public    List<Customer> getCustomers(){  
            List<Customer> list=new ArrayList<Customer>();  
            try{  
                Class.forName("org.gjt.mm.mysql.Driver");  
                Connection con=DriverManager.getConnection("jdbc:mysql://192.168.1.6:3306/serialnumber","root","123");  
                PreparedStatement ps=con.prepareStatement("select * from info");  
                ResultSet rs=ps.executeQuery();  
                
                while(rs.next()){  
                    Customer c=new Customer();  
                    c.setName(rs.getString(1));  
                    c.setEmail(rs.getString(2));  
                    list.add(c);  
                }  
                con.close();  
            }catch(Exception e){System.out.println(e);}  
            return list;  
        }//end of getCustomers()  
    }  
    View Code

    Customer.java

    public class Customer implements java.io.Serializable{  
        private String name; 
        private String email;
        public void setName(String name){
            this.name=name;
        }
        public void setEmail(String email){
            this.email=email;
        }
        public String getName(){
            return name;
        }
        public String getEmail(){
            return email;
        }
        public String toString(){
            return name+" "+email;
        }
    } 
    View Code

    MyServer.java

    import java.rmi.*;  
    public class MyServer{  
        public static void main(String args[])throws Exception{  
            Remote r=new BankImpl();  
            Naming.rebind("rmi://localhost:6666/mine",r);  
        }
    }  
    View Code

    编译服务器端源代码

    注册:注册的过程中会生成BankImpl_Stub.class(用于拷贝至客户端);

    启动服务器:

    客户端代码:

    Customer.java

    public class Customer implements java.io.Serializable{  
        private String name; 
        private String email;
        public void setName(String name){
            this.name=name;
        }
        public void setEmail(String email){
            this.email=email;
        }
        public String getName(){
            return name;
        }
        public String getEmail(){
            return email;
        }
        public String toString(){
            return name+" "+email;
        }
    } 
    View Code

    Bank.java

    import java.rmi.*;  
    import java.util.*;  
    interface Bank extends Remote{  
    public List<Customer> getCustomers()throws RemoteException;  
    }  
    View Code

    MyCLient.java

    import java.util.*;  
    import java.rmi.*;  
    public class MyClient{  
    public static void main(String args[])throws Exception{  
        Bank b=(Bank)Naming.lookup("rmi://localhost:6666/mine");  
        List<Customer> list=b.getCustomers();      
            for(Customer c:list){  
                System.out.println(c);  
            }  
            System.out.println("done");
        }
    }  
    View Code

    编译:

    把服务器端的BankImpl_Stub.class拷贝过来

    启动客户端

    下载该实例

     相关链接:

    http://www.javatpoint.com/RMI

    http://blog.csdn.net/a19881029/article/details/9465663

  • 相关阅读:
    大数据学习——实现多agent的串联,收集数据到HDFS中
    大数据学习——flume拦截器
    Notepad++ 连接远程 FTP
    大数据学习——采集文件到HDFS
    How to Catch Ctrl-C in Shell Script
    Error: package or namespace load failed for ‘rJava’:
    Complex Instance Placement
    Linux 下 CPU 使用率与机器负载的关系与区别
    编码和加密算法介绍
    k8s sidecar, Ambassador, Adapter containers
  • 原文地址:https://www.cnblogs.com/yuanzhenliu/p/5729402.html
Copyright © 2020-2023  润新知