zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    如何 Scale Up/Down Deployment?- 每天5分钟玩转 Docker 容器技术(126)
    读懂 Deployment YAML
    k8s 创建资源的两种方式
    在qemu模拟的aarch32上使用kgtp
    交叉编译gdb和gdbserver
    基于设备树的controller学习(2)
    基于设备树的controller学习(1)
    基于设备树的TQ2440 DMA学习(4)—— client驱动
    基于设备树的TQ2440 DMA学习(3)—— DMA控制器驱动
    基于设备树的TQ2440 DMA学习(2)—— 简单的DMA传输
  • 原文地址:https://www.cnblogs.com/yuanzhenliu/p/5729402.html
Copyright © 2011-2022 走看看