亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaIDL的分布式程序設計方法是什么

發布時間:2021-12-02 15:42:01 來源:億速云 閱讀:155 作者:iii 欄目:編程語言

本篇內容介紹了“JavaIDL的分布式程序設計方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

JavaIDL介紹

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.分別編譯服務器端和客戶端程序

a.編譯服務器端程序:

javac getMessage\server.java

b.編譯客戶端程序:

javac getMessage\client.java

7.運行

a.打開一個仿真終端窗口,啟動命名服務,其中3388為通信端口號:

tnameserv -ORBInitialPort 3388

b.在另一個窗口中輸入以下命令,運行服務端程序:

java server -ORBInitialPort 3388

c.在另一個窗口中輸入以下命令,運行客戶端程序:

java client -ORBInitialPort 3388

“JavaIDL的分布式程序設計方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长春市| 福贡县| 南开区| 宁波市| 广水市| 壤塘县| 光泽县| 梨树县| 贡山| 禹州市| 恩施市| 大厂| 栾川县| 赤峰市| 郸城县| 富民县| 化隆| 泰和县| 威信县| 桃园县| 正蓝旗| 嵊州市| 新乡市| 广东省| 武陟县| 乐安县| 昌邑市| 米易县| 胶南市| 清徐县| 唐海县| 开平市| 阿拉善左旗| 垫江县| 泰宁县| 阿坝| 雷州市| 闸北区| 合山市| 阿拉善右旗| 小金县|