<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程序

    一、開發工具 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

    ----------------------------------------------代碼--------------------------------------------------
    首先創建一個接口:
    /* 
     * 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;
    }



    接口的實現:
    /* 
     * 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(
    "創建服務");
       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();
     }

    }


    再創建一個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、創建存根 輸入: 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、執行客戶端程序 輸入:  C:\>java com.snoics.study.rmi.information.InformationClient

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


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



    posted on 2005-10-14 17:29 snoics 閱讀(1666) 評論(0)  編輯  收藏 所屬分類: 學習 . 感悟
    主站蜘蛛池模板: 最近免费中文字幕MV在线视频3| 95老司机免费福利| 西西人体44rt高清亚洲| 16女性下面无遮挡免费| 亚洲欧美熟妇综合久久久久 | 十八禁视频在线观看免费无码无遮挡骂过| 亚洲精品无码mv在线观看网站| 亚洲免费在线视频| 亚洲乱码中文字幕在线| 日本亚洲欧洲免费天堂午夜看片女人员| 中文字幕视频免费| 美女被爆羞羞网站在免费观看| 国产亚洲一区二区精品| 欧美最猛性xxxxx免费| 久久久久久久久久免免费精品| 亚洲日本国产乱码va在线观看| 国产99视频精品免费视频7| 久久免费视频99| 在线亚洲v日韩v| 亚洲国产精品综合久久网各| 亚洲国产成人五月综合网 | 亚洲国产综合第一精品小说| 亚洲综合久久夜AV | 日韩不卡免费视频| 中文字幕免费人成乱码中国| 一本色道久久88亚洲精品综合| 亚洲午夜久久久久久噜噜噜| 成年女人午夜毛片免费看| 免费国产午夜高清在线视频| 在线视频亚洲一区| 亚洲人成网站看在线播放| 亚洲精品制服丝袜四区| 国产乱子伦精品免费女| 青娱乐免费在线视频| 国内精品免费在线观看| 理论片在线观看免费| 亚洲一区动漫卡通在线播放| 亚洲AV无码一区东京热| 亚洲国产综合人成综合网站| 在线观看免费毛片| 思思re热免费精品视频66|