<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-26  評論-111  文章-19  trackbacks-0

    今天寫了一個簡單的RMI程序

    一、開發(fā)工具 eclipse3.1
            JDK1.4

    二、目錄結構

     E:\SHIWEI\STUDY\RMI
    │  .classpath
    │  .project

    ├─bin
    │  └─com
    │      └─snoics
    │          └─study
    │              └─rmi
    │                  └─information
    │                          client.policy
    │                          Information.class
    │                          InformationClient.class
    │                          InformationImpl.class
    │                          InformationImpl_Stub.class
    │                          InformationServer.class
    │                          ShowBindingsName.class

    └─src
        └─com
            └─snoics
                └─study
                    └─rmi
                        └─information
                                client.policy
                                Information.java
                                InformationClient.java
                                InformationImpl.java
                                InformationServer.java
                                ShowBindingsName.java

    ----------------------------------------------代碼--------------------------------------------------
    首先創(chuàng)建一個接口:
    /* 
     * FileName Information.java
     * Create Time 2005-10-14 13:43:28
     * Author shiwei
     * Descript 
     * Version 
     
    */


    package com.snoics.study.rmi.information;

    import java.rmi.Remote;
    import java.rmi.RemoteException;

    public interface Information extends Remote{
     String getDescript() 
    throws RemoteException;
    }



    接口的實現(xiàn):
    /* 
     * FileName InformationImpl.java
     * Create Time 2005-10-14 13:44:59
     * Author shiwei
     * Descript 
     * Version 
     
    */


    package com.snoics.study.rmi.information;

    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;

    public class InformationImpl extends UnicastRemoteObject implements Information{
     
    private static final long serialVersionUID = -3493514659140991974L;
     
    private String descript="";
     
     
    public InformationImpl(String descript) throws RemoteException{
      
    this.descript=descript;
     }

     
        
    public String getDescript() throws RemoteException{
         
    return "show Descript: "+descript+"!";
        }

    }



    服務端的代碼:
    /* 
     * FileName InformationServer.java
     * Create Time 2005-10-14 13:48:36
     * Author shiwei
     * Descript 服務端
     * Version 
     
    */


    package com.snoics.study.rmi.information;

    import java.rmi.Naming;


    public class InformationServer {
     
    public InformationServer() {
      
     }

     
     
    /**
      * 注冊綁定服務
      *
      
    */

     
    public void bindServer() {
      
    try {
       System.out.println(
    "創(chuàng)建服務");
       InformationImpl productImpl1
    =new InformationImpl("I'm a Person");
       InformationImpl productImpl2
    =new InformationImpl("I'm a Work");
       System.out.println(
    "Binding Server to registry");
       Naming.rebind(
    "person",productImpl1);
       Naming.rebind(
    "work",productImpl2);
      }
    catch(Exception e) {
       e.printStackTrace() ;
      }

     }

     
     
    public static void main(String[] args) {
      InformationServer informationServer
    =new InformationServer();
      informationServer.bindServer();
      
      ShowBindingsName showBindingsName
    =new ShowBindingsName();
      showBindingsName.show();
     }

    }


    再創(chuàng)建一個ShowBindingsName.java顯示服務器注冊的名稱:

    /* 
     * FileName ShowBindingsName.java
     * Create Time 2005-10-14 13:53:50
     * Author shiwei
     * Descript 顯示Naming List
     * Version 
     
    */


    package com.snoics.study.rmi.information;

    import java.rmi.Naming;

    public class ShowBindingsName {
     
    /**
      * 顯示Naming List
      *
      
    */

     
    public void show() {
      
    try {
       String[] bindings
    =Naming.list("");
       
    int length=bindings.length;
       
    for(int i=0;i    System.out.println(bindings[i]);
       }

      }
    catch(Exception e) {
       e.printStackTrace() ;
      }

     }

    }

    客戶端的代碼:

    /* 
     * FileName InformationClient.java
     * Create Time 2005-10-14 13:56:39
     * Author shiwei
     * Descript 客戶端
     * Version 
     
    */


    package com.snoics.study.rmi.information;

    import java.rmi.Naming;
    import java.rmi.RMISecurityManager;


    public class InformationClient {

     
    /**
      * 遠程調用
      *
      
    */

     
    public void showInformation() {
      System.setProperty(
    "java.security.policy""E:/ShiWei/Study/RMI/bin/com/snoics/study/rmi/information/client.policy");
      System.setSecurityManager(
    new RMISecurityManager());
      
      String url
    ="rmi://localhost/";
      
    try {
       Information information1
    =(Information)Naming.lookup(url+"person");
       Information information2
    =(Information)Naming.lookup(url+"work");
       System.out.println(
    "information1.descript="+information1.getDescript());
       System.out.println(
    "information2.descript="+information2.getDescript());
      }
    catch(Exception e) {
       e.printStackTrace();
      }

     }

     
     
    public static void main(String[] args) {
      InformationClient informationClient
    =new InformationClient();
      informationClient.showInformation();
     }

    }


    安全策略文件 client.policy

    grant
    {
      permission java.net.SocketPermission
         
    "*:1024-65535""connect,accept";
      permission java.net.SocketPermission
         
    "*:80""connect";
    }
    ;


    ----------------------------------------------代碼結束--------------------------------------------------


    三、部署程序:

    代碼寫完就該開始動手部署了,RMI的部署也是一個非常讓人頭疼的問題。

    只要一步步的跟著我下面的操作進行,一定可以把這個程序部署起來的。

    首先假設編譯好的class放到 E:\ShiWei\Study\RMI\bin 路徑下面。

    打開DOS窗口
    1、設置classpath  輸入:  C:\>set classpath=E:\ShiWei\Study\RMI\bin

    2、創(chuàng)建存根 輸入: C:\>rmic -v1.2 -d E:\ShiWei\Study\RMI\bin com.snoics.study.rmi.information.InformationImpl

    3、啟動RMI注冊表 輸入: C:\>start rmiregistry

    4、啟動服務端程序 輸入: C:\>start java com.snoics.study.rmi.information.InformationServer

    5、執(zhí)行客戶端程序 輸入:  C:\>java com.snoics.study.rmi.information.InformationClient

    6、如果以上的步驟全部執(zhí)行成功,將在控制臺上看到以下的信息:
    information1.descript=show Descript: I'm a Person!
    information2.descript=show Descript: I'm a Work!


    四、注意:
       
           如果在執(zhí)行過程中,客戶端執(zhí)行失敗,請檢查是否有打開防火墻,請把防火墻關閉以后重新執(zhí)行客戶端程序。



    posted on 2005-10-14 17:29 snoics 閱讀(1666) 評論(0)  編輯  收藏 所屬分類: 學習 . 感悟
    主站蜘蛛池模板: 免费人成在线观看网站品爱网日本| 久久综合九色综合97免费下载| 999国内精品永久免费视频| 亚洲AV成人片色在线观看高潮 | 久久亚洲国产成人影院| 114一级毛片免费| 亚洲国产精品午夜电影| 免费看国产精品3a黄的视频 | 日韩毛片一区视频免费| 免费在线观看a级毛片| 久久精品无码免费不卡| 久久久久久久综合日本亚洲| 久久精品免费观看国产| 亚洲精品国产情侣av在线| 成人免费777777| 特级毛片aaaa免费观看| 亚洲第一福利网站| 可以免费看的卡一卡二| 爱情岛亚洲论坛在线观看| 久久精品国产亚洲5555| 久久精品一本到99热免费| 亚洲欧美第一成人网站7777| 亚洲国产精品无码久久青草| 亚洲免费观看视频| 亚洲精品综合在线影院| 亚洲日本中文字幕一区二区三区| a毛片免费观看完整| 亚洲中文无码永久免费| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲乱码中文字幕综合234| a级毛片免费播放| 国产成人精品日本亚洲18图| 亚洲国产成人久久精品99| 色猫咪免费人成网站在线观看| 亚洲综合一区无码精品| 最新亚洲成av人免费看| 日韩欧毛片免费视频| 亚洲免费在线观看| 激情内射亚洲一区二区三区爱妻| 久久精品国产亚洲5555| 最近免费中文字幕视频高清在线看|