銀色幻想

          常用鏈接

          統計

          積分與排名

          學習交流

          最新評論

          rmi的實現

          RMI,遠程方法調用(Remote Method Invocation)是Enterprise JavaBeans的支柱,是建立分布式Java應用程序的方便途徑。RMI是非常容易使用的,但是它非常的強大。
            RMI的基礎是接口,RMI構架基于一個重要的原理:定義接口和定義接口的具體實現是分開的。下面我們通過具體的例子,建立一個簡單的遠程計算服務和使用它的客戶程序

            一個正常工作的RMI系統由下面幾個部分組成:
          • 遠程服務的接口定義
          • 遠程服務接口的具體實現
          • 樁(Stub)和框架(Skeleton)文件
          • 一個運行遠程服務的服務器
          • 一個RMI命名服務,它允許客戶端去發現這個遠程服務
          • 類文件的提供者(一個HTTP或者FTP服務器)
          • 一個需要這個遠程服務的客戶端程序

          相關代碼如下:
          接口類
          public interface RMI_Add extends java.rmi.Remote {
          ?public long add(long a, long b, long c) throws java.rmi.RemoteException;
          }


          實現類
          import java.rmi.Naming;

          public class RMI_AddImpl extends java.rmi.server.UnicastRemoteObject implements RMI_Add {
          ?public RMI_AddImpl() throws java.rmi.RemoteException {
          ??super();
          ?}

          ?public long add(long a, long b, long c) throws java.rmi.RemoteException {
          ??return a + b + c;
          ?}

          ?public static void main(String[] args) {
          ??try {
          ???RMI_Add d = new RMI_AddImpl();
          ???Naming.rebind("rmi://127.0.0.1:1099/RMI_AddService", d);
          ??} catch (Exception e) {
          ???e.printStackTrace();
          ??}
          ?}

          }

          客戶端
          import java.net.MalformedURLException;
          import java.rmi.Naming;
          import java.rmi.NotBoundException;
          import java.rmi.RMISecurityManager;
          import java.rmi.RemoteException;

          public class Client {
          ?public static void main(String[] args) {
          ??System.setSecurityManager(new RMISecurityManager());

          ??try {
          ???RMI_Add t = (RMI_Add) Naming.lookup("rmi://127.0.0.1:1099/RMI_AddService");
          ???for (int i = 0; i < 10; i++)
          ????System.out.println("Perfect time =" + t.add(1, 2, 3));
          ??} catch (MalformedURLException e) {
          ???e.printStackTrace();
          ??} catch (RemoteException e) {
          ???e.printStackTrace();
          ??} catch (NotBoundException e) {
          ???e.printStackTrace();
          ??}
          ?}

          }


          一條最簡單的安全策略,它允許任何人做任何事,對于你的更加關鍵性的應用,你必須指定更加詳細安全策略。
          grant {
          ? permission java.security.AllPermission "", "";
          };

          相關命令
          rmic -classpath . -d . RMI_AddImpl
          start rmiregistry 1099
          java -Djava.rmi.server.codebase=file:///E:/workspace/rmi/ RMI_AddImpl
          java -Djava.security.policy=policy.txt Client

          posted on 2006-11-04 10:26 銀色幻想 閱讀(286) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 白银市| 昌宁县| 临猗县| 苍山县| 康保县| 澄迈县| 朝阳区| 宁晋县| 夏津县| 南平市| 丘北县| 兰溪市| 福州市| 泰兴市| 黄梅县| 连江县| 南宫市| 印江| 富蕴县| 乌兰察布市| 温泉县| 宝坻区| 绥江县| 宿迁市| 丁青县| 台前县| 河北区| 内江市| 寿阳县| 从江县| 闻喜县| 德州市| 屯留县| 商水县| 留坝县| 高淳县| 萨嘎县| 藁城市| 密云县| 天祝| 连南|