<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)  編輯  收藏 所屬分類: 學習 . 感悟
    主站蜘蛛池模板: 亚洲AV无码一区东京热久久| 四虎永久在线精品免费影视| 久久久久亚洲精品成人网小说| 午夜在线免费视频| 亚洲国产免费综合| 国产亚洲高清在线精品不卡| 日韩黄色免费观看| 日韩毛片在线免费观看| 亚洲精品和日本精品| 97在线免费观看视频| 亚洲AV无码精品无码麻豆| 久9热免费精品视频在线观看| 久久青青草原亚洲AV无码麻豆| 久久久久久免费一区二区三区| 亚洲v高清理论电影| 亚洲电影在线免费观看| 亚洲中文无码卡通动漫野外 | 亚洲黄网在线观看| 国产免费不卡v片在线观看| 亚洲综合一区国产精品| 亚洲Av无码乱码在线观看性色| 男女一进一出抽搐免费视频| 亚洲av无码一区二区三区不卡 | 色播在线永久免费视频| 五级黄18以上免费看| 亚洲AV成人片色在线观看| 无码av免费毛片一区二区| 美女黄色免费网站| 亚洲欧洲第一a在线观看| 性做久久久久久久免费看| 免费很黄无遮挡的视频毛片| 亚洲女初尝黑人巨高清| 99re热免费精品视频观看 | 日韩电影免费在线观看| 亚洲国产成人91精品| 免费中文字幕在线| 欧洲精品99毛片免费高清观看| 亚洲熟妇无码av另类vr影视| 国产精品亚洲аv无码播放| 精品久久久久成人码免费动漫| 免费激情网站国产高清第一页|