• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    基于Java IDL的分布式程序設計

    發布: 2008-2-20 13:07 | 作者: 不詳 | 來源: 不詳 | 查看: 61次 | 進入軟件測試論壇討論

    領測軟件測試網 Java IDL介紹
      JavaIDL是Java 2開發平臺中的CORBA功能擴展。在Java 2中引入JavaIDL,使得利用OMG IDL能夠定義服務對象的基本功能,并且將IDL根據CORBA規范的要求,映射到Java語言,并以此開發出標準的具有互操作性和可連接性的分布式應用。JavaIDL使分布式、支持Web的Java應用可以基于IIOP協議透明地調用遠程服務。
      JavaIDL運行期(Runtime)組件包括一個全兼容的對象請求代理——Java ORB,用于基于IIOP協議實現分布式對象之間的通信。該ORB支持瞬態CORBA對象和瞬態名字服務器,并且ORB生存期受運行ORB進程生存期的限制。
      在程序設計中,首先對要實現的服務對象功能進行系統分析,并創建IDL接口描述文件對功能進行描述。然后利用JavaIDL提供的IDL到Java語言的映射工具將IDL文件映射為客戶端樁(Stub)文件和服務器骨架(Skeleton)文件。
      在實現的客戶端應用程序中,包括對遠程對象的引用、服務功能請求的發送以及服務對象返回結果的解析處理等功能。通常,客戶端應用程序利用命名服務實現對遠程對象的綁定,并通過客戶端ORB將客戶端與服務對象聯系起來,實現方法的遠程調用。
      在服務器端,ORB利用服務對象骨架將調用請求和參數的數據格式進行轉換,把遠程調用轉換為對本地對象中方法的調用。當方法返回時,骨架對計算結果進行轉換和封裝,通過ORB把結果返回給客戶機。
    建立CORBA應用程序的過程
      分布式應用程序設計的主要問題是確定建立在對象級上的客戶與服務對象的關系,從其最根本的功能來講,服務對象提供遠程接口,客戶對象調用遠程接口,客戶對象不需要了解遠程CORBA對象的位置以及實現細節,也不需要了解哪個ORB 用于對象之間的交互。
      按照實現的基本過程,CORBA對象服務的實現方式分為兩種: 對象的命名引用方式和字符串化對象引用方式。CORBA創建分布式應用程序的過程大體如下:
      ● 進行系統分析,確定服務對象需要實現的功能;
      ● 根據系統分析結果,編寫IDL接口說明文件;
      ● 編譯接口說明文件,產生服務對象的骨架與客戶對象的樁(可選);
      ● 基于客戶對象的樁,編寫客戶對象程序;
      ● 基于服務對象的骨架或者動態請求實現,編寫服務對象程序;
      ● 分別編譯客戶對象和服務對象程序;
      ● 啟動服務對象程序;
      ● 啟動客戶對象程序。
    分布式應用程序示例
     以下用一個例程說明建立分布式應用程序的過程:
    1. 對象功能描述和系統簡要設計
      在服務對象端將一個字符串對象賦值,客戶端通過調用服務對象方法獲取該字符串的值。根據對象功能的說明,用UML描述出服務對象需要實現的功能:
      getIt() : String[]
    2. 服務對象接口定義
      根據系統分析結果,用IDL編寫出服務對象方法描述程序getMessage.idl:
      module getMessage
      { interface getIt
      { string returnObject();
         };
        };
    3. 編譯getMessage.idl
      idltojava -fno-cpp getMessage.idl。
    4. 編寫客戶端程序
      //引入相關類庫
      import org.omg.CosNaming.*;
      import org.omg.CORBA.*;
      //客戶端對象方法
      public class client
      { public static void main(String args[])
         { // 創建和初始化ORB
         ORB orb = ORB.init(args, null);
         // 獲取根命名服務上下文對象
        org.omg.CORBA.Object naming =
        orb.resolve_initial_references(“NameService”);
         NamingContext namingContext = NamingContextHelper.narrow(naming);
           //解析命名中的對象引用
           NameComponent nc = new NameComponent(“getMessage”, “”);
           NameComponent path[] = {nc};
         getMessage.getIt method =getMessage-
      Helper.narrow(namingContext.resolve(path));
         // 調用服務對象方法
         String result=method.returnObject();
         }
      }
    5. 編寫服務對象程序
      // 引入相關類庫
      import org.omg.CosNaming.*;
      import org.omg.CosNaming.NamingContext
      Package.*;
      import org.omg.CORBA.*;
      //服務方法
      class returnMethod extends _getMessage-
      ImplBase
      { public String getIt()
      { String result =“How about it”;
      return result;
      }
      }
      //服務器端方法
      public class server
      { public static void main(String args[])
        { // 創建和初始化ORB
         ORB orb = ORB.init(args, null);
      // 創建服務對象并將其向ORB注冊
      returnMethod obj=new returnMethod();
      orb.connect(returnMethod);
      // 獲取根命名上下文
      org.omg.CORBA.Object objRef =
      orb.resolve_initial_references
      (“NameService”);
      NamingContext ncRef = Naming
      ContextHelper.narrow(objRef);
      // 綁定命名中的對象引用
      NameComponent nc = new NameComponent(“getMessage”, “”);
      NameComponent path[] = {nc};
      ncRef.rebind(path, objRef);
      // 等待來自客戶機的調用
      java.lang.Object sync=new java.lang
      .Object();
      synchronized (sync)
      { sync.wait();
        }
        }
      }
    6. 分別編譯服務器端和客戶端程序
     。1)編譯服務器端程序:
      javac getMessage\server.java
     。2)編譯客戶端程序:
      javac getMessage\client.java
    7. 運行
     。1)打開一個仿真終端窗口,啟動命名服務,其中3388為通信端口號:
         tnameserv -ORBInitialPort 3388
     。2)在另一個窗口中輸入以下命令,運行服務端程序:
         java server -ORBInitialPort 3388
     。3)在另一個窗口中輸入以下命令,運行客戶端程序:
         java client -ORBInitialPort 3388

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: IDL java JAVA Java


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>